Seaborn boxplot 水平线注释

BAC*_*C83 2 python boxplot pandas seaborn

我想在一些图中添加一条水平线,即“目标”线:带状图、箱线图和小提琴图,以显示理想值数据(或理想情况下的范围)。

这个 R 示例(在箱线图中添加多条水平线) - 第一张图像 - 基本上就是它(尽管我会做一些格式化以使其易于展示)。

Python中的R abline() 等价物对我没有帮助(或者我还没有弄清楚如何),因为我正在使用分类数据,所以我只想基本上定义(例如)y=3并绘制它。我的代码(如下)工作正常,我只是不知道如何添加一行。

fig, ax = plt.subplots(nrows=4,figsize=(20,20))

sns.violinplot(x="Wafer", y="Means", hue='Feature', 
           data=Means[Means.Target == 1], ax=ax[0])
sns.violinplot(x="Wafer", y="Means", hue='Feature', 
           data=Means[Means.Target == 3], ax=ax[1])
sns.boxplot(x="Feature", y="Means", 
        data=Means, linewidth=0.8, ax=ax[2])
sns.stripplot(x="Feature", y="Means", hue='Wafer',
          data=Means, palette="plasma", jitter=0.1, size=5.5, ax=ax[3])
Run Code Online (Sandbox Code Playgroud)

非常感谢任何帮助。

She*_*ore 5

比方说,你wan't绘制在高度水平线yx1x2哪里x1,并x2为您的实际X-数据值。以下只是您可以做到的几种方法中的三种:

第一的:

ax.hlines(y, x1, x2)
Run Code Online (Sandbox Code Playgroud)

第二:

plt.plot([x1, x2], [y, y])
Run Code Online (Sandbox Code Playgroud)

第三届(x1x2现在之间的相对/分数坐标0意义最左边和1意义右一):

ax.axhline(y, x1, x2)
Run Code Online (Sandbox Code Playgroud)