2 回答

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超3個(gè)贊
你也可以這樣做:
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]
這里的問(wèn)題是 matplotlib 軸轉(zhuǎn)換為整數(shù):'var1'->1、'var2'->2 等,并且ax2是一個(gè)新軸所以 'var4'->1、'var5'->2 并且你得到重疊。使雙軸之間的類別相同可以消除這種混淆。

TA貢獻(xiàn)1812條經(jīng)驗(yàn) 獲得超5個(gè)贊
問(wèn)題是您的條形重疊,因此您看到的條形少了兩個(gè)。解決方案是使用定義明確的 x 值來(lái)定位條形圖,然后在雙軸上繪制后,分配 x 刻度標(biāo)簽。
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()
添加回答
舉報(bào)