创建双箱线图 - 即每个 x 值有两个框

问题描述 投票:0回答:2

我想创建一个箱线图,其中每个 x 值都有两个彼此相邻的箱线图,有点像这样:

enter image description here

这可能吗?如果可以的话我该怎么办?

python matplotlib boxplot
2个回答
9
投票

我不知道这种图是否有名称,但您可以简单地通过使用

pyplot.boxplot
函数并传入 Position 关键字来稍微移动框来创建它。这是一个例子

x = np.array([1000,2000])
data1 = np.array([np.random.normal(loc=0.5,size=100),np.random.normal(loc=1.5,size=100)]).T
data2 = np.array([np.random.normal(loc=2.5,size=100),np.random.normal(loc=0.75,size=100)]).T
plt.figure()
plt.boxplot(data1,0,'',positions=x-100,widths=150)
plt.boxplot(data2,0,'',positions=x+100,widths=150)
plt.xlim(500,2500)
plt.xticks(x)
plt.show()

首先我们为左右框和相应的x位置创建两组数据。接下来,我们绘制每组数据,指定位置为 x,但分别稍微向左和向右移动。 注意:因为我们的 x 位置相距很远,所以我们还必须使用

widths
关键字调整宽度。 现在我们设置正确的 x 轴限制,然后最后将 x 刻度位置替换为我们想要的位置。

它产生以下输出:

enter image description here


0
投票

谢谢您的代码,这正是我正在寻找的。但是我有 3 个 x 值(每个值有 2 个箱线图),并且我正在从 excel 文件中读取 y 数据(每个箱 1 列);我可以弄清楚我需要调整代码的哪一部分以将其从 2 x 点更改为 3 x 点,并且我相信最大的问题是我无法弄清楚要指定什么的位置。你能建议一下吗?

© www.soinside.com 2019 - 2024. All rights reserved.