具有不同颜色编码和不同标记的 Sns 散点图

Sns Scatter plot with differet color coding and different markers

我想创建一个 Seaborn 散点图,使用以下数据框:

df = pd.DataFrame({'A':[1,2,3,4],'B':[2,4,6,8],'C':['y','y','n','n'],'D':[1,1,2,2]})

在我的图表中 A 应该是 x-variableB 应该是 y-variable。此外,我想根据列 D 进行着色。最后,当 C='y' 时,标记应该是开放的(没有颜色),当 C='n' 时,标记应该是封闭的。我最初的想法是使用 huestyle 参数:

sns.scatterplot(x='A', y='B',
                        data=df, hue='D',style ='C')

但是,我没有设法获得我正在寻找的图表。有人可以帮我吗?提前谢谢你。

目前还不能为 matplotlib 指定整个标记样式(所以在你的情况下是 'marker''fillstyle' 键)。查看 .

的答案

所以你唯一要做的就是立即使用不同的标记并指定它们(作为列表或字典)

sns.scatterplot(data=df, x='A', y='B', hue='D', style='C', markers=['o', 's'])
plt.show()

显然,正如 解释的那样,甚至在 seaborn 中创建非填充标记都非常困难。唯一的选择是做一些 matplotlib-seaborn-hybrid 的事情......所以如果你接受在同一个轴上绘制两次(一个用于填充标记,一个用于未填充标记),你仍然必须深入研究seaborn 的怪癖...