在之前的文章中小編介紹過(guò)matplotlib怎么畫子圖,但是有時(shí)候要把幾張圖放在一起進(jìn)行對(duì)比,還需要共享坐標(biāo)軸,那么matplotlib子圖怎么共享坐標(biāo)軸呢?接下來(lái)這篇文章告訴你。
分析
有時(shí)候想要把幾張圖放在一起plot,比較好對(duì)比,subplot和subplots都可以實(shí)現(xiàn),具體對(duì)比可以查看參考博文。這里用matplotlib庫(kù)的subplot來(lái)舉個(gè)栗子。
數(shù)據(jù)長(zhǎng)什么樣
有兩個(gè)數(shù)據(jù)段,第一個(gè)數(shù)據(jù)是DataFrame類型,第二個(gè)是ndarray類型。每個(gè)數(shù)據(jù)都有3列,我想畫1*3的折線子圖,第一個(gè)數(shù)據(jù)的第n列和第二個(gè)數(shù)據(jù)的第n列畫在一張子圖上。先來(lái)看一下兩個(gè)數(shù)據(jù)長(zhǎng)什么樣兒(為顯示方便,只看前5行)。
In [1]: testing_set.head() # DataFrame類型
Out [1]: Open High Low
0 778.81 789.63 775.80
1 788.36 791.34 783.16
2 786.08 794.48 785.02
3 795.26 807.90 792.20
4 806.40 809.97 802.83 # ndarray類型
In [2]: predicted_stock_price #這里就只看前5行
Out [2]: [[790.6911 796.39215 779.3191 ]
[790.24524 796.0866 778.9673 ]
[789.5737 795.52606 778.3751 ]
[790.1047 796.10864 778.92395]
[790.8686 796.94104 779.7281 ]]
實(shí)現(xiàn)過(guò)程
注:plt.setp()是用來(lái)共享y坐標(biāo)軸
# 創(chuàng)建畫布
fig = plt.figure(figsize = (30,10), dpi = 80)
# 子圖1
ax1 = plt.subplot(131)
ax1.set_title('Open Price')
ax1.plot(testing_set.values[:,0], color = 'red', label = 'Real Open Price')
ax1.plot(predicted_stock_price[:,0], color = 'blue', label = 'Predicted Open Price')
plt.setp(ax1.get_xticklabels(), fontsize=6)
ax1.legend()
# 子圖2
ax2 = plt.subplot(132,sharey=ax1)
ax2.set_title('High Price')
ax2.plot(testing_set.values[:,1], color = 'red', label = 'Real High Price')
ax2.plot(predicted_stock_price[:,1], color = 'blue', label = 'Predicted High Price')
ax2.legend()
# 子圖3
ax3 = plt.subplot(133,sharey=ax1)
ax3.set_title('Low Price')
ax3.plot(testing_set.values[:,2], color = 'red', label = 'Real Low Price')
ax3.plot(predicted_stock_price[:,2], color = 'blue', label = 'Predicted Low Price')
ax3.legend()
plt.show()
結(jié)果:
到此這篇matplotlib子圖怎么共享坐標(biāo)軸的文章就介紹到這了,更多matplotlib使用的文章請(qǐng)關(guān)注W3Cschool!