人工智慧機器學習有關-Matplotlib工具的使用(二)
阿新 • • 發佈:2021-10-20
Matplotlib的使用
- Matplotlib:可以用來畫圖的工具,為了讓資料看起來更加直觀。
- 定義
主要用於開發2D圖表(3D),資料分析,基於分析,進行展示 - 繪圖流程
- 建立畫布
- 繪製圖像
- 顯示影象
- 定義
點選檢視程式碼
import matplotlib.pyplot as plt # 1.建立畫布 plt.figure #2. 影象繪製 x = [1,2,3,4,5,6] y = [3,6,3,6,3,10] plt.plot(x,y) # 3.影象展示 plt.show()
-
matplotlib三層結構
- 容器層
- canvas
- figure
- axes
- 輔助顯示層
新增X軸,y軸描述,標題..... - 影象層
繪製什麼影象的宣告
- 容器層
-
影象的儲存
# 1.建立畫布
# figsize指畫布大小,dpi指畫素
plt.figure(figsize=(20,8),dpi=100)# 2. 影象繪製 x = [1,2,3,4,5,6] y = [3,6,3,6,3,10] plt.plot(x,y) # 2.1 影象儲存 plt.savefig("./data/demo.png") #儲存在根目錄下面的data資料夾裡面,名字Wiedemo.png # 3.影象展示 plt.show() # 注意,當show之後,就釋放資源了,就不可以在進行其他的操作了
-
新增x,y軸
import matplotlib.pyplot as plt
import random# 0.生成資料 x = range(60) # 列表生成式 y = [random.uniform(10,15) for i in x] # 1.建立畫布 plt.figure(figsize=(20,8),dpi=100) # 2.影象繪製 plt.plot(x,y) # 2.1 新增x,y軸刻度 y_ticks = range(40) # 這一步出現['11點0分','11點1分','11點2分','11點3分','11點4分'。。。 x_ticks_labels = ["11點{}分".format(i) for i in x] # 控制y軸,每一格之間的距離是5 plt.yticks(y_ticks[::5]) # 控制x軸,每一個格之間距離是5,且顯示為11點0分,11點5分。。。 plt.xticks(x[::5],x_ticks_labels[::5]) # 3.影象展示 plt.show()
-
新增網格
# True代表新增網格;linestyle="--"代表網格為虛線,“-”代表為實線,alpha=1代表為透明度
plt.grid(True,linestyle="--",alpha=1)
-
新增描述
# 2.3 新增描述
plt.xlabel("時間")
plt.ylabel("溫度")
plt.title("一小時溫度變化圖",fontsize=20)
如果漢字不顯示,則這樣解決:
import matplotlib.pyplot as plt
plt.rc('font', family='SimHei', size=13)
-
繪製多個曲線並顯示圖例
import matplotlib.pyplot as plt
import random
import matplotlib.pyplot as plt
plt.rc('font', family='SimHei', size=20)# 0.生成資料 x = range(60) y_beijing = [random.uniform(10,15) for i in x] y_shanghai = [random.uniform(15,25) for i in x] # 1.建立畫布 plt.figure(figsize=(20,8),dpi=100) # 2.影象繪製,顯示圖例的話需要在這個裡面假如label plt.plot(x,y_beijing,label="北京") plt.plot(x,y_shanghai,label="上海") # 2.1 新增x,y軸刻度 y_ticks = range(40) # 這一步出現['11點0分','11點1分','11點2分','11點3分','11點4分'。。。 x_ticks_labels = ["11點{}分".format(i) for i in x] # 控制y軸,每一格之間的距離是5 plt.yticks(y_ticks[::5]) # 控制x軸,每一個格之間距離是5,且顯示為11點0分,11點5分。。。 plt.xticks(x[::5],x_ticks_labels[::5]) # 2.2 新增網格 # True代表新增網格;linestyle="--"代表網格為虛線,“-”代表為實線,alpha=1代表為透明度 plt.grid(True,linestyle="--",alpha=1) # 2.3 新增描述 plt.xlabel("時間") plt.ylabel("溫度") plt.title("一小時溫度變化圖",fontsize=20) # 2.4 顯示圖例 plt.legend() # 3.影象展示 plt.show()
-
多個座標系顯示影象
import matplotlib.pyplot as plt
import random
import matplotlib.pyplot as plt
plt.rc('font', family='SimHei', size=13)# 0.生成資料 x = range(60) y_beijing = [random.uniform(10,15) for i in x] y_shanghai = [random.uniform(15,25) for i in x] # 1.建立畫布,nrows代表幾行,ncols代表幾列 fig, axes = plt.subplots(nrows=1,ncols=2,figsize=(20,8),dpi=100) # 2.影象繪製,顯示圖例的話需要在這個裡面加入label axes[0].plot(x,y_beijing,label="北京",color="g",linestyle="-.") axes[1].plot(x,y_shanghai,label="上海") # 2.1 新增x,y軸刻度 y_ticks = range(40) # 這一步出現'11點0分','11點1分','11點2分','11點3分','11點4分'。。。 x_ticks_labels = ["11點{}分".format(i) for i in x] axes[0].set_xticks(x[::5]) axes[0].set_yticks(y_ticks[::5]) axes[0].set_xticklabels(x_ticks_labels[::5]) axes[1].set_xticks(x[::5]) axes[1].set_yticks(y_ticks[::5]) axes[1].set_xticklabels(x_ticks_labels[::5]) # 2.2 新增網格 axes[0].grid(True,linestyle="--",alpha=1) axes[1].grid(True,linestyle="--",alpha=1) # 2.3新增描述 axes[0].set_xlabel("時間") axes[0].set_ylabel("溫度") axes[0].set_title("北京一小時溫度變化圖") axes[1].set_xlabel("時間") axes[1].set_ylabel("溫度") axes[1].set_title("上海一小時溫度變化圖") # 2.4顯示圖例 axes[0].legend(loc=0) axes[1].legend(loc=0) # 3.影象展示 plt.show()