我正沿着两个不同的轴绘制多个箱图。 我的代码如下:
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处绘制2个较低的箱线图,以便它们与第2和第3个上方箱图对齐。我想保持所有x轴的xlabels相同且一致。
有什么想法吗?
答案 0 :(得分:2)
这适用于您的示例代码。但是,此解决方案绕过了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)