matplotlib創建多個繪圖區


這段跟之前的操作單獨的一個繪圖區的代碼整個過程幾乎是一致的,區別主要有兩點:

  • 一是使用索引來確定要操作的是哪個繪圖區,比如這里的axes[0]和axes[1]。每一行中定義的繪圖區用一個一維數組來表示,如果創建的是兩行兩列的繪圖區,則整個繪圖區會保存在一個二維數組里面,表示為axes[0][0]這種格式。
  • 二是當我們設置x軸和y軸的值時,原來使用的xticks和yticks方法,但現在使用axes.set_xticks和set_yticks這種更偏向於面向對象的函數調用方法來進行操作,包括像設置x軸和y軸的標簽以及設置圖形標題等,都是使用set_title,set_label這樣的形式。
import matplotlib.pyplot as plt
# %matplotlib inline
from tools.plt_test import weather

weathers = weather.weather_day()    # 獲取最近七天天氣的方法
x = []      # 存放近七天的日期
low = []    # 存放近七天的最低溫度
high = []   # 存放近七天的最高溫度
diff = []   # 存放近七天的溫差
# 獲取日期,最高溫,最低溫,溫差
for i in weathers:
    print(weathers[i])
    x.append(weathers[i]['time'].split('-', 1)[1])
    low.append(int(weathers[i]['min_degree']))
    high.append(int(weathers[i]['max_degree']))
# 獲取溫差
for l, h in zip(low, high):
    diff.append(h - l)

# 顯示中文
plt.rcParams['font.sans-serif'] = ['SimHei']
# 解決無法顯示負號
plt.rcParams['axes.unicode_minus'] = False
# 創建一個1行2列的畫布
figure, axes = plt.subplots(ncols=2, nrows=1, figsize=(13, 5), dpi=100)
# 繪圖對象
ax1 = axes[0]
ax2 = axes[1]

# ax1 config
# 設置標題
ax1.set_title('天氣走勢圖')
# x軸描述
ax1.set_xlabel('日期')
# y軸描述
ax1.set_ylabel('溫度')
# 添加網格顯示,linestyle網格樣式,alpha透明度
ax1.grid(linestyle=':', alpha=0.5)
# 一條折線
ax1.plot(x, low, label='最高溫')
# 另一條折線
ax1.plot(x, high, label='最低溫')
# 右上角顯示圖例
ax1.legend()

# ax2 config
# 設置標題
ax2.set_title('高低溫差圖')
# x軸描述
ax2.set_xlabel('日期')
# y軸描述
ax2.set_ylabel('溫度')
# 添加網格顯示,linestyle網格樣式,alpha透明度
ax2.grid(linestyle=':', alpha=0.5)
# 一條折線
ax2.plot(x, diff, label='高低溫差', color='green')
# y軸范圍,間距
ax2.set_yticks(range(0, 16, 1))
# 右上角顯示圖例
ax2.legend()

# 保存圖片,顯示繪圖
plt.savefig('weather_demo.png')
plt.show()


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM