【问题标题】:Seaborn jointplot group colour coding (for both scatter and density plots)Seaborn 联合图组颜色编码(用于散点图和密度图)
【发布时间】:2019-09-14 07:11:07
【问题描述】:

我想使用 sns.jointplot 在存在两个组的情况下可视化 X 和 Y 之间的关联。然而,在

tips = sns.load_dataset("tips")
sns.jointplot("total_bill", "tip", data=tips) 

没有“色调”选项,如 sns.scatterplot 等其他 sns 图。如何在散点图中以及两个重叠的密度图中为不同的组(例如 hue="smoker")分配不同的颜色。

在 R 中,这可以通过创建具有两个边缘密度图的散点图来完成,如 here 所示。

sns 中的等价物是什么?如果这在 sns 中是不可能的,是否有另一个可以用于此的 python 包?

【问题讨论】:

标签: python seaborn


【解决方案1】:

jointplotsns.JointGrid 的简单包装器。如果您创建一个JointGrid 对象并手动添加绘图,您将对各个绘图有更多的控制权。

在这种情况下,您想要的jointplot 只是一个scatterplotkdeplot 的组合,而您要做的是将hue='smoker'(例如)传递给scatterplot

kdeplot 更复杂; seaborn 并不真正支持每个类使用一个 KDE,AFAIK,所以我不得不单独绘制它们(您可以使用带有更多类的 for 循环)。

因此,您可以这样做:

import seaborn as sns

tips = sns.load_dataset('tips')
grid = sns.JointGrid(x='total_bill', y='tip', data=tips)

g = grid.plot_joint(sns.scatterplot, hue='smoker', data=tips)
sns.kdeplot(tips.loc[tips['smoker']=='Yes', 'total_bill'], ax=g.ax_marg_x, legend=False)
sns.kdeplot(tips.loc[tips['smoker']=='No', 'total_bill'], ax=g.ax_marg_x, legend=False)
sns.kdeplot(tips.loc[tips['smoker']=='Yes', 'tip'], ax=g.ax_marg_y, vertical=True, legend=False)
sns.kdeplot(tips.loc[tips['smoker']=='No', 'tip'], ax=g.ax_marg_y, vertical=True, legend=False)

【讨论】:

猜你喜欢
  • 2015-05-28
  • 1970-01-01
  • 2020-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-15
相关资源
最近更新 更多