将splitplot(dotplot)添加到分组的boxplot - Panda和Seaborn

时间:2016-02-29 15:15:30

标签: pandas matplotlib boxplot seaborn

我第一次使用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()

图中:enter image description here

您会看到点不以框为中心,因为框图中使用了“width”参数。有什么方法可以将点对齐盒子吗? boxplot命令中的width参数是未对齐点的原因。

P.S。 - 我已经添加了汤姆提到的MCVE。

Bade的

1 个答案:

答案 0 :(得分:0)

组之间的距离是自动计算的,并且没有简单的方法来更改它,我知道,但是您使用间接方式在箱图中修改它:关键字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)

aligned plot