App下載

matplotlib畫(huà)子圖并共享y坐標(biāo)軸的方法

猿友 2021-07-30 10:24:13 瀏覽數(shù) (3555)
反饋

在之前的文章中小編介紹過(guò)matplotlib怎么畫(huà)子圖,但是有時(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列,我想畫(huà)1*3的折線子圖,第一個(gè)數(shù)據(jù)的第n列和第二個(gè)數(shù)據(jù)的第n列畫(huà)在一張子圖上。先來(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)建畫(huà)布
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é)果:

運(yùn)行結(jié)果

到此這篇matplotlib子圖怎么共享坐標(biāo)軸的文章就介紹到這了,更多matplotlib使用的文章請(qǐng)關(guān)注W3Cschool!


0 人點(diǎn)贊