在同一张图中显示两个Seaborn图表

6
我希望创建一个图表,可以可视化单个数据点以及不同变量的一些集中趋势度量。我认为可以在同一轴上使用seaborn stripplot(加上一些抖动)和pointplot。
import seaborn as sns
tips = sns.load_dataset("tips")
sns.set(style="white", color_codes=True)
ax = sns.stripplot(x="sex", y="total_bill", hue='smoker', data=tips,
                   split=True, jitter=True)
ax = sns.pointplot(x="sex", y="total_bill", hue='smoker', data=tips,
                   dodge=True, join=False)

然而,当我这样做时,条形图的数据值和点图的误差线是倾斜的,并且不能彼此重叠显示: 示例图 如何解决这个问题,使误差线显示在抖动后的数据值上方?
1个回答

5
点图的dodge参数可以是任何值,不仅仅是True或False,并且它表示点之间的间隔。通过一些试错,您可以找到将两个点放在条形图点正上方的值。我发现在这种情况下0.4就可以解决问题。也许有更优雅的解决方案,但这是我知道的一个方案 :)
以下是代码:
import seaborn as sns
tips = sns.load_dataset("tips")
sns.set(style="white", color_codes=True)
fig, ax = sns.plt.subplots()
sns.pointplot(x="sex", y="total_bill", hue='smoker', data=tips,
                   dodge=0.4, join=False, ax=ax, split = True)
sns.stripplot(x="sex", y="total_bill", hue='smoker', data=tips,
                   split=True, jitter=True, ax = ax)

enter image description here


2
你可以在两个图中都使用相同的 dodge,即 sns.stripplot(..., dodge=0.3)sns.pointplot(..., dodge=0.3)。这样可以消除“试错”的组成部分。 - ImportanceOfBeingErnest
@ImportanceOfBeingErnest 不错的提示 - BossaNova

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接