(1)canvas(畫闆)位于最底層,導入matplotlib的時候就自動存在
(2)figure(畫布)。建立在canvas之上,從這一層就可以開始設定其參數
(3)axes(子圖)。将figure分成不同塊,實作分面繪圖
繪圖之前,需要用到的第三方庫numpy,matplotlib
折線圖的繪制
import numpy as np
import matplotlib.pyplot as plt
x=np.arange(0,10) #生成0,1,2,3,4,5,6,7,8,9
y=np.arange(0,10)
plt.plot(x,y)
plt.show()

添加标題
import numpy as np
import matplotlib.pyplot as plt
pic = plt.figure(figsize=(6, 6), dpi=80) # 設定2*1的畫布,像素位80
plt.rcParams['font.sans-serif'] = ['SimHei'] # 顯示中文标簽
plt.rcParams['axes.unicode_minus'] = False # 不加這兩句下面的繪圖二字顯示不出來
plt.title('Matplotlib繪圖') # 添加标題
x = np.arange(0, 10) # 生成0,1,2,3,4,5,6,7,8,9
y = np.arange(0, 10)
plt.xlabel('x') # 設定x軸的名稱為"x"
plt.ylabel('y')
plt.xticks([0, 2, 4, 6, 8, 10])
plt.yticks([0, 2, 4, 6, 8, 10])
plt.plot(x, y, color='green') # 設定顔色
plt.legend(['x=y']) # 設定圖例
plt.show()
折線
import matplotlib.pyplot as plt
pic = plt.figure(figsize=(6, 6), dpi=80) # 設定2*1的畫布,像素位80
plt.rcParams['font.sans-serif'] = ['SimHei'] # 顯示中文标簽
plt.rcParams['axes.unicode_minus'] = False # 不加這兩句下面的繪圖二字顯示不出來
plt.title('Matplotlib繪圖') # 添加标題
x = [0, 1, 2, 3, 4]
y = [0, 1, 3, 6, 10]
plt.plot(x, y)
plt.show()
繪制兩條直線分别在兩張圖一個畫闆上
import numpy as np
import matplotlib.pyplot as plt
pic = plt.figure(figsize=(6, 6), dpi=80) # 設定2*1的畫布,像素位80
pic.add_subplot(2, 1, 1) # 高為2:能容納兩張圖的高,寬為1:能容納一張圖的寬
x = np.arange(0, 10) # 生成0,1,2,3,4,5,6,7,8,9
y = np.arange(0, 10)
plt.xlabel('x') # 設定x軸的名稱為"x"
plt.ylabel('y')
plt.xticks([0,2,4,6,8,10]) #标記刻度
plt.yticks([0,2,4,6,8,10])
plt.plot(x, y, color='green') # 設定顔色
pic.add_subplot(2, 1, 2)
x = np.arange(0, 10)
y = np.arange(0, 10)
plt.xticks([0,2,4,6,8,10])
plt.plot(x, y, color='blue')
plt.show()
繪制散點圖
import numpy as np
import matplotlib.pyplot as plt
pic = plt.figure(figsize=(6, 6), dpi=80) # 設定2*1的畫布,像素位80
x = np.random.rand(100) # 生成0~1随機數100個
y = np.random.rand(100)
plt.scatter(x,y)
plt.show()
繪制柱形圖
import matplotlib.pyplot as plt
pic = plt.figure(figsize=(6, 6), dpi=80) # 設定2*1的畫布,像素位80
x = [0, 1, 2, 3, 4]
y = [0, 1, 3, 6, 10]
plt.bar(x, y)
plt.show()
import numpy as np
import matplotlib.pyplot as plt
pic = plt.figure(figsize=(6, 6), dpi=80) # 設定2*1的畫布,像素位80
x = np.random.normal(0, 1, 1000) # 生成1000個服從正态分布資料
plt.hist(x, bins=20, density=True, rwidth=0.95) # rwidth柱形的寬
plt.show()
餅圖繪制
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] # 顯示中文标簽
plt.rcParams['axes.unicode_minus'] = False # 不加這兩句下面的繪圖二字顯示不出來
Genshin = np.random.randint(0, 10, 5) # 随機在0~9生成5個數
labels = ['可莉', '甘雨', '七七', '鐘離', '刻晴']
# 繪制餅圖
plt.pie(x=Genshin, # 繪圖資料
labels=labels, # 添加角色标簽
autopct='%.1f%%') # 設定百分比的格式,這裡保留一位小數,小數點前面的數字對産生的結果沒有任何影響,小數點後面的數字表示保留小數點幾位。
plt.title("原神角色持有占比")
plt.show() # 顯示圖形
Axes3D繪圖
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = Axes3D(fig)
x = np.arange(0, 10) # 生成0,1,2,3,4,5,6,7,8,9
y = np.arange(0, 10)
z = np.arange(0, 10)
plt.xlabel('x') # 設定x軸的名稱為"x"
plt.ylabel('y')
plt.xticks([0, 2, 4, 6, 8, 10])
plt.yticks([0, 2, 4, 6, 8, 10])
ax.plot(x, y, z, color='green') # 設定顔色
plt.show()