将分割图(点图)添加到分组箱线图 - Pandas 和 Seaborn

Posted

技术标签:

【中文标题】将分割图(点图)添加到分组箱线图 - Pandas 和 Seaborn【英文标题】:Adding splitplot (dotplot) to grouped boxplot - Panda and Seaborn 【发布时间】:2016-06-12 16:43:30 【问题描述】:

我第一次使用 seaborn,并尝试制作一个嵌套(分组)箱线图,其中数据点添加为点。这是我的代码:

import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt
tips = sns.load_dataset("tips")
sns.set(style="ticks")
## Draw a nested boxplot to show bills by day and sex
sns.boxplot(x="day", y="total_bill", hue="smoker",data=tips,width=0.5,palette="PRGn",linewidth=1)

## Draw a split strip plot
sns.stripplot(x="day", y="total_bill", hue="smoker",palette="PRGn",data=tips,size=4,edgecolor="gray",
             split=True)
sns.despine(offset=10, trim=True)
plt.show()

还有图:

由于箱线图中使用了 'width' 参数,您会看到点没有以框为中心。有什么办法可以将点与框对齐? boxplot 命令中的宽度参数是未对齐点的原因。

附言- 我已经添加了 tom 提到的 MCVE。

巴德

【问题讨论】:

在this page 底部的示例中,它们似乎居中(尽管在水平而不是垂直的图中)。也许您可以在重现此行为的问题中添加MCVE? @tom:我添加了示例。 【参考方案1】:

组之间的距离是自动计算的,据我所知,没有简单的方法可以更改它,但是您正在使用一种间接的方式在箱线图中对其进行修改:关键字width。使用默认值,一切都会对齐。

sns.set(style="ticks")
sns.boxplot(x="day", y="total_bill", hue="smoker", data=tips,
            palette="PRGn", linewidth=1)
sns.stripplot(x="day", y="total_bill", hue="smoker", data=tips,
              palette="PRGn", size=4, edgecolor="gray", split=True)
sns.despine(offset=10, trim=True)

【讨论】:

以上是关于将分割图(点图)添加到分组箱线图 - Pandas 和 Seaborn的主要内容,如果未能解决你的问题,请参考以下文章

为熊猫箱线图(groupby)设置无标题

Pandas 按类别分组箱线图以比较 3 个数据集 Matplotlib

用ggplot2画箱线图叠加图层后变成一个很奇怪的样子,求救求救?

Fig4-a ggplot2绘制箱线图叠加散点图2020-12-14

R语言使用ggplot2包geom_jitter()函数绘制分组(strip plot,一维散点图)带状图(添加箱图带缺口的小提琴图小提琴图)实战

Seaborn 和 Pandas,分组箱线图