中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python?Matplotlib如何繪制多子圖

發布時間:2022-02-23 14:03:56 來源:億速云 閱讀:207 作者:小新 欄目:開發技術

這篇文章將為大家詳細講解有關Python Matplotlib如何繪制多子圖,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

通過獲取子圖的label和線型來合并圖例

注意添加label

#導入數據(讀者可忽略)
pre_lp=total_res#組合模型
true=diff1[-pre_day:]#真實值
pre_ph=results_data["yhat"]#prophet
pre_lstm=reslut#lstm
pre_ari=data_ari['data_pre']#arima
#設置中文字體
rcParams['font.sans-serif'] = 'kaiti'

# 生成一個時間序列 (讀者可根據情況進行修改或刪除)
time =pd.to_datetime(np.arange(0,21), unit='D',
                    origin=pd.Timestamp('2021-10-19'))
#創建畫布
fig=plt.figure(figsize=(20,16))#figsize為畫布大小
# 1 
ax1=fig.add_subplot(221)
ax1.plot(time,pre_lp,color='#1bb9f6',marker='^',linestyle='-',label='1')
# ax1.plot(time,true,color='#fd5749',marker='s',linestyle='-',label='true')
ax1.set_title('1',fontsize=15)#設置標題
ax1.set_xlabel('日期/天',fontsize=15)#設置橫坐標名稱
ax1.set_ylabel('感染人數/人',fontsize=15)#設置縱坐標名稱
ax1.xaxis.set_major_formatter(mdate.DateFormatter('%m-%d'))#設置橫坐標刻度(讀者可忽略)
plt.xticks(pd.date_range(time[0],time[-1],freq='D'),rotation=45)#設置橫坐標刻度(讀者可忽略)

# 2 
ax2=fig.add_subplot(222)
ax2.plot(time,pre_ph,color='#739b06',marker='o',linestyle='-',label='2')
# ax2.plot(time,true,color='#fd5749',marker='s',linestyle='-',label='true')
ax2.set_title('2',fontsize=15)
ax2.set_xlabel('日期/天',fontsize=15)
ax2.set_ylabel('感染人數/人',fontsize=15)
ax2.xaxis.set_major_formatter(mdate.DateFormatter('%m-%d'))
plt.xticks(pd.date_range(time[0],time[-1],freq='D'),rotation=45)
# 3 
ax3=fig.add_subplot(223)
ax3.plot(time,pre_lstm,color='#38d9a9',marker='*',linestyle='-',label='3')
# ax3.plot(time,true,color='#fd5749',marker='s',linestyle='-',label='true')
ax3.set_title('3',fontsize=15)
ax3.set_xlabel('日期/天',fontsize=15)
ax3.set_ylabel('感染人數/人',fontsize=15)
ax3.xaxis.set_major_formatter(mdate.DateFormatter('%m-%d'))
plt.xticks(pd.date_range(time[0],time[-1],freq='D'),rotation=45)

# 4 
ax4=fig.add_subplot(224)
ax4.plot(time,pre_ari,color='#e666ff',marker='x',linestyle='-',label='4')
ax4.plot(time,true,color='#fd5749',marker='s',linestyle='-',label='true')
ax4.set_title('4',fontsize=15)
ax4.set_xlabel('日期/天',fontsize=15)
ax4.set_ylabel('感染人數/人',fontsize=15)
ax4.xaxis.set_major_formatter(mdate.DateFormatter('%m-%d'))
plt.xticks(pd.date_range(time[0],time[-1],freq='D'),rotation=45)

#初始化labels和線型數組
lines=[]
labels=[]
#通過循環獲取線型和labels
for ax in fig.axes:
    axLine, axLabel = ax.get_legend_handles_labels()
    lines.extend(axLine)
    labels.extend(axLabel)
#設置圖例和調整圖例位置
fig.legend(lines, labels,loc='lower center',
           ncol=5,framealpha=False,fontsize=25)

結果如下圖

Python?Matplotlib如何繪制多子圖

這個時候我們再把原先代碼里面的通過循環獲取label和線型注釋掉,代碼如下

#導入數據(讀者可忽略)
pre_lp=total_res#組合模型
true=diff1[-pre_day:]#真實值
pre_ph=results_data["yhat"]#prophet
pre_lstm=reslut#lstm
pre_ari=data_ari['data_pre']#arima
#設置中文字體
rcParams['font.sans-serif'] = 'kaiti'

# 生成一個時間序列 (讀者可根據情況進行修改或刪除)
time =pd.to_datetime(np.arange(0,21), unit='D',
                    origin=pd.Timestamp('2021-10-19'))
#創建畫布
fig=plt.figure(figsize=(20,16))#figsize為畫布大小
# 1 
ax1=fig.add_subplot(221)
ax1.plot(time,pre_lp,color='#1bb9f6',marker='^',linestyle='-',label='1')
ax1.plot(time,true,color='#fd5749',marker='s',linestyle='-',label='true')
ax1.set_title('1',fontsize=15)#設置標題
ax1.set_xlabel('日期/天',fontsize=15)#設置橫坐標名稱
ax1.set_ylabel('感染人數/人',fontsize=15)#設置縱坐標名稱
ax1.xaxis.set_major_formatter(mdate.DateFormatter('%m-%d'))#設置橫坐標刻度(讀者可忽略)
plt.xticks(pd.date_range(time[0],time[-1],freq='D'),rotation=45)#設置橫坐標刻度(讀者可忽略)

# 2 
ax2=fig.add_subplot(222)
ax2.plot(time,pre_ph,color='#739b06',marker='o',linestyle='-',label='2')
ax2.plot(time,true,color='#fd5749',marker='s',linestyle='-',label='true')
ax2.set_title('2',fontsize=15)
ax2.set_xlabel('日期/天',fontsize=15)
ax2.set_ylabel('感染人數/人',fontsize=15)
ax2.xaxis.set_major_formatter(mdate.DateFormatter('%m-%d'))
plt.xticks(pd.date_range(time[0],time[-1],freq='D'),rotation=45)
# 3 
ax3=fig.add_subplot(223)
ax3.plot(time,pre_lstm,color='#38d9a9',marker='*',linestyle='-',label='3')
ax3.plot(time,true,color='#fd5749',marker='s',linestyle='-',label='true')
ax3.set_title('3',fontsize=15)
ax3.set_xlabel('日期/天',fontsize=15)
ax3.set_ylabel('感染人數/人',fontsize=15)
ax3.xaxis.set_major_formatter(mdate.DateFormatter('%m-%d'))
plt.xticks(pd.date_range(time[0],time[-1],freq='D'),rotation=45)

# 4 
ax4=fig.add_subplot(224)
ax4.plot(time,pre_ari,color='#e666ff',marker='x',linestyle='-',label='4')
ax4.plot(time,true,color='#fd5749',marker='s',linestyle='-',label='true')
ax4.set_title('4',fontsize=15)
ax4.set_xlabel('日期/天',fontsize=15)
ax4.set_ylabel('感染人數/人',fontsize=15)
ax4.xaxis.set_major_formatter(mdate.DateFormatter('%m-%d'))
plt.xticks(pd.date_range(time[0],time[-1],freq='D'),rotation=45)

#初始化labels和線型數組
# lines=[]
# labels=[]
#通過循環獲取線型和labels
# for ax in fig.axes:
#  	 axLine, axLabel = ax.get_legend_handles_labels()
#    lines.extend(axLine)
#    labels.extend(axLabel)
#設置圖例和調整圖例位置
fig.legend(lines, labels,loc='lower center',
           ncol=5,framealpha=False,fontsize=25)

結果如下圖

Python?Matplotlib如何繪制多子圖

調整子圖間距

plt.subplots_adjust(wspace=0.4,hspace=0.4)

wspace為子圖之間寬間距,hspace為子圖之間高間距

對比圖如下

設置了間距的圖像

Python?Matplotlib如何繪制多子圖

沒有設置間距的圖像

Python?Matplotlib如何繪制多子圖

關于“Python Matplotlib如何繪制多子圖”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

湖州市| 拜泉县| 塘沽区| 手机| 长岭县| 宝兴县| 万年县| 昌邑市| 恭城| 通许县| 大城县| 和顺县| 保亭| 壤塘县| 三门县| 大足县| 禹州市| 财经| 昌图县| 孟州市| 介休市| 法库县| 盱眙县| 志丹县| 噶尔县| 阿拉善盟| 海城市| 大名县| 南郑县| 留坝县| 白玉县| 新兴县| 白山市| 凤阳县| 衡东县| 沈阳市| 梓潼县| 运城市| 濮阳市| 礼泉县| 广平县|