天天看點

Matplotlib繪圖庫講解

(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()
           
Matplotlib繪圖庫講解

添加标題

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()
           
Matplotlib繪圖庫講解

折線

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()
           
Matplotlib繪圖庫講解

繪制兩條直線分别在兩張圖一個畫闆上

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()
           
Matplotlib繪圖庫講解

繪制散點圖

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()
           
Matplotlib繪圖庫講解

繪制柱形圖

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()
           
Matplotlib繪圖庫講解
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()
           
Matplotlib繪圖庫講解

餅圖繪制

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()  # 顯示圖形
           
Matplotlib繪圖庫講解

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()
           
Matplotlib繪圖庫講解

繼續閱讀