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

时间:2021-07-09 07:15:07

标签: python pandas seaborn scatter-plot

我想使用以下数据框创建一个 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-variable,而 B 应该是 y-variable。此外,我想根据列 D 进行着色。最后,当 C='y' 时,标记应该是开放的(没有 facecolor),而当 C='n' 时,标记应该是封闭的。我最初的想法是使用 huestyle 参数:

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

但是,我没有设法获得我正在寻找的图表。有人可以帮我解决这个问题吗?提前致谢。

1 个答案:

答案 0 :(得分:0)

还不能为 matplotlib 指定完整的标记样式(因此在您的情况下为 'marker''fillstyle' 键)。看看this post的答案。

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

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

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