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

2022-02-27 00:00:00 python pandas scatter-plot seaborn

问题描述

我想使用以下数据帧创建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-variableBy-variable。此外,我想根据D栏进行着色。最后,当C='y'标记应该是开放式的(没有面色),当C='n'标记应该是闭合的。我最初的想法是使用huestyle参数:

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

但是,我没有设法获得我要查找的图表。有人能帮我搬一下这个吗?提前感谢您。


解决方案

目前还不能为matplotlib指定整个标记样式(因此'marker''fillstyle'键)。查看this post的答案。

因此,留给您的唯一事情就是立即使用不同的标记并指定它们(作为列表或字典)

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

显然,正如this post所解释的那样,即使在海运中创建非填充标记也是非常困难的。唯一的选择就是做一些matplotlib海运混血的事情.因此,如果您接受在同一轴上绘制两次(一次用于已填充的标记,另一次用于未填充的标记),您仍然必须通过挖洞将自己带入海运的怪圈.

相关文章