一. 基本概念(組成)
- matplotlib組成: 由棧組成, 分爲三層: Scripting(腳本), Artist(美工),Backend(後臺).
- 在整個matplotlib中, 圖形中所能看到的元素都屬於Artist對象, 即標題, 軸標籤, 刻度等組成的所有元素都是Artist對象的實例.
(1) 如果把Artist比做畫畫的話, Figure相當於畫板, Axes(座標系)相當於畫畫的白紙, Axis(座標系)相當於白紙上畫的座標系
所以, 可以說一個畫布(figure)可以有多個Axes(座標系), 一個座標系可以有多個Axis(座標軸), 包含兩個即爲2D座標系, 包含三個即爲3D座標系.
(2) Subplot實際上是axes的特例(子集) , 就是一個畫布上多畫幾個Axes(座標系),再縮小到特定位置,就是Subplot了. 相當於MATLAB中的一個圖中有好幾個座標系
二. 入門應用
1. 基本折線圖繪製
import matplotlib.pyplot as plt
# 當plot中參數只有一個列表時, 列表中數字代表縱座標, 橫座標從0開始
plt.plot([4, 6, 3, 6, 8, 7])
plt.show()
import matplotlib.pyplot as plt
# 當plot中參數有兩組列表時, 第一組代表橫座標, 第二組代表縱座標
plt.plot([0, 1, 2, 3, 4, 5, ], [1, 2, 3, 4, 5, 6])
plt.show()
2. 折線圖簡單應用: 繪製溫度變化折線圖
import matplotlib.pyplot as plt
import random
# 生成fig畫布在上面畫圖. figsize爲設置圖片尺寸, dpi爲設置圖片透明度, 數字越大透明度越高
plt.figure(figsize=(20, 8), dpi=80)
# 編碼中文顯示問題, 輸入這兩行代碼可以讓圖中的中文正常顯示
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
# 準備x, y座標的數據
x = range(60) # 橫座標
# 上海天氣縱座標
y_shanghai = [random.uniform(15, 18) for i in x]
# 北京天氣縱座標
y_beijing = [random.uniform(3, 5) for i in x]
# 橫座標時間數據
x_ch = ["11點{}分".format(i) for i in x]
# 縱座標數據
y_ticks = range(40)
# 上海折線圖繪製
plt.plot(x, y_shanghai, label='上海')
# 北京折線圖繪製(x爲x軸, y_beijing爲y軸, color爲線條顏色, linestyle爲線條樣式, label爲綁定標籤'北京')
plt.plot(x, y_beijing, color='r', linestyle='--', label='北京')
# 顯示刻度, 間隔(步長)
plt.xticks(x[::5], x_ch[::5]) # 橫座標步長間隔5
plt.yticks(y_ticks[::5]) # 橫座標步長間隔5
# 曲線圖的各種屬性
plt.xlabel("時間") # 橫座標屬性
plt.ylabel("溫度") # 縱座標屬性
plt.title("一些城市的溫度變化曲線圖") # 座標軸標題
# 圖中加入註釋(圖片右上角標誌)
plt.legend(loc="best")
# 保存圖片(我的圖片位置爲: C:\Users\admin)
plt.savefig("matplotlib.png")
# 顯示
plt.show()
運行結果如下圖 :
三. 多座標系建立
上一個應用是用的 plt.plot(), 意思是在畫布上建立一個座標系. 而subplot則是建立多個座標系. subplot: 畫多個座標系
-
語法: plt.subplots(nrows=1, ncols=1, **fig_kw)
-
設置不同標題的方法:
set_xticks() : 設置橫座標的刻度
set_yticks() : 設置縱座標的刻度
set_xlabel() : 設置橫座標的題目
set_ylabel() : 設置縱座標的題目
set_title() : 設置圖標的標題# 畫出溫度變化圖 import matplotlib.pyplot as plt import random # 返回兩個參數. nrows, ncols代表一行兩列 fig,axes=plt.subplots(nrows=1, ncols=2, figsize=(20, 8), dpi=80) # 編碼中文顯示問題 plt.rcParams['font.sans-serif']=['SimHei'] plt.rcParams['axes.unicode_minus']=False # 準備x, y座標的數據 x = range(60) # 上海 y_shanghai = [random.uniform(15, 18) for i in x] # 北京 y_beijing = [random.uniform(3, 5) for i in x] x_ch = ["11點{}分".format(i) for i in x] y_ticks = range(40) # 上海折線圖繪製 axes[0].plot(x, y_shanghai, label='上海') # 北京折線圖繪製 axes[1].plot(x, y_beijing, color='r', linestyle='--', label='北京') # 設置x軸間隔 # 第一個參數: 必須是值, 第二個參數: 指定跟第一個參數對應的中文 # x[::5]: 兩對冒號代表從0到x-1, 步長爲5.(聯想: 列表長度) axes[0].set_xticks(x[::5], x_ch[::5]) axes[0].set_xticks(x[::5], x_ch[::5]) # 設置y軸間隔 axes[0].set_yticks(y_ticks[::5]) axes[0].set_yticks(y_ticks[::5]) # 折線圖的各種屬性 # 設置x軸, y軸的時間標題. axes[0]代表第一個圖, axes[1]代表第二個圖 axes[0].set_xlabel("時間") axes[1].set_xlabel("時間") # 設置x軸, y軸的溫度標題 axes[0].set_ylabel("溫度") axes[0].set_ylabel("溫度") # 設置圖的標題 axes[0].set_title("一些城市的溫度變化曲線圖") axes[1].set_title("一些城市的溫度變化曲線圖") # 圖中加入註釋 plt.legend(loc="best") # 顯示 plt.show()
此篇文章: matplotlib(2)—柱狀圖, 直方圖, 餅狀圖的繪製
繼續對matplotlib庫進行學習.