我想在一些图上添加一条水平线,即“目标”线:条形图,箱形图和小提琴图,以显示理想值数据(或理想范围)。 / p>
这个R示例(Add multiple horizontal lines in a boxplot)-第一张图片-基本上就是它(尽管我会做一些格式化以使其表现出来)。
R abline() equivalent in Python对我使用分类数据没有帮助(或者我还没有弄清楚如何做),所以我只想本质上定义(例如)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])
任何帮助都将不胜感激。
答案 0 :(得分:2)
假设您不想在y
到x1
到x2
的高度处绘制一条水平线,其中x1
和x2
是您的实际x -数据值。以下是您可能采取的几种方法中的三种:
第一:
ax.hlines(y, x1, x2)
第二:
plt.plot([x1, x2], [y, y])
第三(x1
和x2
现在位于0
(最左边和1
(最右边)之间)的相对/分数坐标中:
ax.axhline(y, x1, x2)
答案 1 :(得分:1)
如果要定义一个好坏区域,我通常会发现在数据后面放置一个补丁可以使用户更容易理解。
fig, ax = plt.subplots(figsize=(4, 4))
ax.plot([1,2,3,4], [1,2,3,4], color='blue') # simple example line
# define patch area
rect = patches.Rectangle(
xy=(ax.get_xlim()[0], 2), # lower left corner of box: beginning of x-axis range & y coord)
width=ax.get_xlim()[1]-ax.get_xlim()[0], # width from x-axis range
height=1,
color='green', alpha=0.1, ec='red'
)
ax.add_patch(rect)
plt.show()