【问题标题】:Sns Scatter plot with differet color coding and different markers具有不同颜色编码和不同标记的 Sns 散点图
【发布时间】:2021-09-19 13:45:42
【问题描述】:

我想创建一个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' 标记应该是开放的(没有facecolor)时,当C='n' 标记应该是封闭的。我最初的想法是使用huestyle参数:

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

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

【问题讨论】:

  • 我不完全确定我理解您的问题。如果只是您的标记看起来不像您想要的那样,请使用 markers 关键字来定义它们
  • 你不能在 seaborn 中混合填充和线条艺术创作者,这是由于may makes points invisible 的渲染方式。您可以提供字典以将style 映射到matplotlib markermarkers={"y": "s", "n": "o"}。但是两个标记都应该被填充或线条艺术。另一种方法是自己使用ax.scatter,但这样你就失去了seaborn的功能。

标签: python pandas seaborn scatter-plot


【解决方案1】:

尚不能为 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的怪癖......

【讨论】:

    猜你喜欢
    • 2014-12-16
    • 1970-01-01
    • 2019-11-03
    • 2018-07-31
    • 1970-01-01
    • 2021-07-13
    • 2015-07-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多