標籤:

add_subplot()如何讓子圖的縱坐標一致 |matplotlib

今天用到了matplotlib中的add_subplot()來畫子圖,需要在縱坐標一致的前提下對比子圖條形高度。結果每個子圖的縱坐標各懷鬼胎,非要和其他妖艷賤貨不一樣,完全失去對比性。

看似一個簡單的問題,硬是花了我兩個小時才Google到可行的解決辦法,我這個菜鳥已被折磨得吐血。

那麼要怎麼設置,才使子圖的坐標刻度一致?subplot有set_ylim()方法把子圖的坐標軸統一

通過plot.set_ylim()方法設置y軸坐標範圍,在每個子圖代碼部分都要調用該方法。

plot.set_ylim(1, 10)n

這是調整後的子圖集,數據變化一目了然。

在每個子圖代碼部分都要調用該方法:

fig = plt.figure()nfig.set(alpha=0.65) nplt.title(u"各艙等級和性別的獲救情況")nnaxl = fig.add_subplot(141) ndata_train.Survived[data_train.Sex == female][data_train.Pclass != 3].value_counts().plot(kind=bar, label="female highclass", color=#FA2479) #1等艙/2等艙為高級艙naxl.set_xticklabels([u"獲救", u"未獲救"], rotation=0) naxl.set_ylim(0, 300) #通過plot.set_ylim()方法設置y軸坐標範圍naxl.legend([u"女性/高級艙"], loc=best) nnax2 = fig.add_subplot(142)ndata_train.Survived[data_train.Sex == female][data_train.Pclass == 3].value_counts().plot(kind=bar, label=female low class, color=pink) #3等艙為低級艙nax2.set_xticklabels([u"未獲救", u"獲救"], rotation=0)nax2.set_ylim(0, 300) #通過plot.set_ylim()方法設置y軸坐標範圍nplt.legend([u"女性/低級艙"], loc=best)nnax3 = fig.add_subplot(143)ndata_train.Survived[data_train.Sex == male][data_train.Pclass != 3].value_counts().plot(kind=bar, label=male highclass, color=lightblue) nax3.set_xticklabels([u"未獲救", u"獲救"], rotation=0)nax3.set_ylim(0, 300) #通過plot.set_ylim()方法設置y軸坐標範圍nplt.legend([u"男性/高級艙"], loc=best)nnax4 = fig.add_subplot(144)ndata_train.Survived[data_train.Sex == male][data_train.Pclass == 3].value_counts().plot(kind=bar, label=male low class, color=steelblue)nax4.set_xticklabels([u"未獲救", u"獲救"], rotation=0)nax4.set_ylim(0, 300) #通過plot.set_ylim()方法設置y軸坐標範圍nplt.legend([u"男性/低級艙"], loc=best)nnplt.show()n

推薦閱讀:

matplotlib & visdom 的圖片顯示問題
解決matplotlib中無法顯示【中文】的問題
Seaborn(sns)官方文檔學習筆記(第三章 分布數據集的可視化)

TAG:Matplotlib | Python |