如何在ECDF绘图中使用标记

2022-02-27 00:00:00 python seaborn markers ecdf

问题描述

要获得海运的ECDF曲线图,应执行以下操作:

sns.ecdfplot(data=myData, x='x', ax=axs, hue='mySeries')

这将给出myData内每个系列mySeries的ECDF图。

现在,我想为这些系列中的每一个使用标记。我尝试使用与sns.lineplot相同的逻辑,如下所示:

sns.lineplot(data=myData,x='x',y='y',ax=axs,hue='mySeries',markers=True, style='mySeries',)
但不幸的是,markersstyle关键字对于sns.ecdf绘图不可用。我使用的是海运0.11.2。

对于可重现的示例,可以使用企鹅数据集:

import seaborn as sns

penguins = sns.load_dataset('penguins')
sns.ecdfplot(data=penguins, x="bill_length_mm", hue="species")

解决方案

您可以遍历生成的行并应用标记。以下是使用企鹅数据集的示例,一次使用默认值,然后使用标记,第三次使用不同的线型:

import matplotlib.pyplot as plt
import seaborn as sns

penguins = sns.load_dataset('penguins')

fig, (ax1, ax2, ax3) = plt.subplots(ncols=3, figsize=(15, 4))

sns.ecdfplot(data=penguins, x="bill_length_mm", hue="species", ax=ax1)
ax1.set_title('Default')

sns.ecdfplot(data=penguins, x="bill_length_mm", hue="species", ax=ax2)
for lines, marker, legend_handle in zip(ax2.lines[::-1], ['*', 'o', '+'], ax2.legend_.legendHandles):
    lines.set_marker(marker)
    legend_handle.set_marker(marker)
ax2.set_title('Using markers')

sns.ecdfplot(data=penguins, x="bill_length_mm", hue="species", ax=ax3)
for lines, linestyle, legend_handle in zip(ax3.lines[::-1], ['-', '--', ':'], ax3.legend_.legendHandles):
    lines.set_linestyle(linestyle)
    legend_handle.set_linestyle(linestyle)
ax3.set_title('Using linestyles')

plt.tight_layout()
plt.show()

相关文章