如何在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',)
但不幸的是,markers
或style
关键字对于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()
相关文章