2 回答
TA贡献1804条经验 获得超3个赞
你也可以这样做:
label = ['var1', 'var2', 'var3', 'var4', 'var5', 'var6']
data1 = [5, 6, 6, 7, np.NaN, np.NaN]
data2 = [np.NaN, np.NaN, np.NaN, np.NaN, 0.5, 0.6]
这里的问题是 matplotlib 轴转换为整数:'var1'->1、'var2'->2 等,并且ax2是一个新轴所以 'var4'->1、'var5'->2 并且你得到重叠。使双轴之间的类别相同可以消除这种混淆。
TA贡献1812条经验 获得超5个赞
问题是您的条形重叠,因此您看到的条形少了两个。解决方案是使用定义明确的 x 值来定位条形图,然后在双轴上绘制后,分配 x 刻度标签。
import matplotlib.pyplot as plt
data1 = [5, 6, 6, 7]
err1 = [1, 1, 1, 1]
data2 = [0.5, 0.6]
err2 = [0.01, 0.01]
label1 = ['var1', 'var2', 'var3', 'var4']
label2 = ['var5', 'var6']
fig, ax1 = plt.subplots()
ax1.bar(range(len(label1)), data1, yerr=err1, color='red')
ax2 = ax1.twinx()
ax2.bar(range(4,6), data2, yerr=err2, color='blue')
ax2.set_xticks(range(6))
ax2.set_xticklabels(label1+label2)
plt.show()
添加回答
举报