Matplotlib,沿沿着x轴移动箱线图?

nfeuvbwi  于 2023-10-24  发布在  其他
关注(0)|答案(1)|浏览(77)

我沿着沿着两个不同的轴绘制多个箱线图。我的代码如下所示:

fig, (ax1, ax2) = plt.subplots(2, sharex=True, sharey=False)

data_1 = [array1, array2, array3]
ax1.boxplot(data_1, whis=[5,95], showfliers=True)

data_2 = [array4, array5]
ax2.boxplot(data_2, whis=[5,95], showfliers=True)
ax2.set_xlim(0,4)

这将生成一个图(替换我的实际数据),看起来像:

但是,我希望下面的图(在ax2上)沿着x轴向右沿着一个单位。也就是说,我希望下面的两个箱线图在x=2和x=3处绘制,这样它们就与上面的第二个和第三个箱线图对齐。我希望所有x轴的x标签保持相同和一致。
有什么想法吗?

tvokkenx

tvokkenx1#

这应该适用于您的示例代码。然而,此解决方案绕过了sharex对齐
在我看来,使用箱线图和sharex时的轴标记有点不直观。

%matplotlib inline
import matplotlib.pylab as plt
import numpy as np
np.random.seed(42)

# create random data
for i in range(1,6):
    x = np.random.rand(10)
    exec("array%s = x" % i)

widths = 0.3
fig, (ax1, ax2) = plt.subplots(2, sharex=True, sharey=False)

data_1 = [array1, array2, array3]
ax1.boxplot(data_1, widths=0.3, whis=[5,95], showfliers=True)

data_2 = [array4, array5]
positions = [2,3]
ax2.boxplot(data_2, positions=positions, widths=widths, whis=[5,95], showfliers=True)

ax2.set_xticks([1,2,3])
ax1.set_xticks([1,2,3])
ax2.set_xticklabels([1,2,3])

plt.xlim(0,4)

相关问题