大資料分析/機器學習基礎之matplotlib繪圖篇

蓮夜發表於2023-11-25

一、前言

本人因在學習基於python的機器學習相關教程時第一次接觸到matplotlib相關方面的繪圖知識,故寫此筆記進行記錄,如果能幫助到其他人歡迎點個贊?表示支援

我的執行環境

  1. 學習工具:jupyter-notebook
  2. python版本:311
  3. 系統:Win11

二、什麼是matplotlib?

matplotlib是基於python生態開發的一個視覺化繪相簿,它的出現讓python在資料分析及機器學習方面佔了重要的一部分,目前很多資料分析及機器學習相關方面的工程都有使用到這個庫,並且由於其簡單易用,安裝簡單等方面的優勢深得廣大開發者的喜愛。

三、安裝及匯入

1.安裝
pip install matplotlib
2. 匯入專案
新建專案並直接import即可import matplotlib.pyplot as plt,簡單易用

四、matplotlib的使用

  1. 基礎使用:生成一個畫布
#定義一個畫布
#subplots(X,Y,figsize=(X,Y))
#其中figsize(X,Y) 用於定義畫布的大小
fig,ax = plt.subplots(figsize = (10, 5))
plt.show()

  1. 生成多個子圖(ax)
#subplots(X,Y)用於定義該畫布有幾行幾列,即一個大畫布fig上有多個小畫布ax組成axes
fig,axes = plt.subplots(2,3,figsize = (10, 4))
plt.show()

  1. 繪製多個子圖
#繪製多個子圖
fig,axes = plt.subplots(1,2,figsize=(10,4))   #繪製一個一行兩列的圖

x=[1,20,40,15,2]
y=[4,6,15,7,6]

#對第一個子圖進行繪製
bplot1 = axes[0].plot(x,y)

#繪製第二個子圖
bplot2 = axes[1].plot(y,x)

  1. 同一塊畫布上繪製多條函式
#簡單的線性圖
# x = list(range(0,10))
# y =list(range(0,10))
# plt.plot(x,y)
plt.plot(range(12),color="red")  #等價於上面的操作
plt.plot([1,2,3])  #在現有的畫布上繼續繪畫零一條直線

  1. 放大影像(只顯示函式影像的一部分)
#原函式影像
x=[1,20,40,15,2]
y=[4,6,15,7,6]
plt.plot(x,y)

#直接對x,y賦值
x=[1,20,40,15,2]
y=[4,6,15,7,6]
plt.plot(x,y)
#透過設定座標軸刻度,只顯示部分圖形
plt.axis([0,10,0,10])   #x:[0,10],y:[0,10]

  1. 為影像新增標題橫縱座標資訊
  • 新增標題和x、y名稱
x=[1,20,40,15,2]
y=[4,6,15,7,6]
#新增標題
plt.title("matplotlibTest")
#新增x,y軸名稱
plt.xlabel("Feature")
plt.ylabel("shape")
plt.plot(x,y)

  • 更改x、y軸刻度(純數字形式)
x=[1,20,40,15,2]
y=[4,6,15,7,6]
#新增標題
plt.title("matplotlibTest")
#新增x,y軸名稱
plt.xlabel("Feature")
plt.ylabel("shape")
#修改x軸刻度,純數字形式
plt.xticks((0,10,20,30,40))
#修改y軸刻度,純數字形式
plt.yticks((0,5,10,15,20))
plt.plot(x,y)

  • 更改x、y軸刻度(自定義座標資訊)
x=[1,20,40,15,2]
y=[4,6,15,7,6]
#新增標題
plt.title("matplotlibTest")
#新增x,y軸名稱
plt.xlabel("Feature")
plt.ylabel("shape")
#自定義x軸座標資訊
plt.xticks((0,10,20,30,40),('text1','text2','text3','text4','text5'))
#自定義y軸座標資訊
plt.yticks((0,5,10,15,20),('align1','align2','align3','align4','align5'))
plt.plot(x,y)

  1. 基於axes的顯示畫圖
#基於 axes 的顯式畫圖:用 Axes 畫圖更加直觀,所以被稱為“顯式畫圖”,直接用 Figure畫圖,被稱為 “隱式畫圖”
import numpy as np
x = np.linspace(-1,1,50)  #生成50個-1到1之間的數
y = x**2

fig = plt.figure()  #生成空白畫布
ax = fig.add_subplot() #空白的子圖

ax.plot(x,y,color="red",linewidth=4,linestyle='-.',marker='o')  #繪畫一條函式圖

ax.plot(y,x)  #繪畫另一條函式圖

ax.legend(["y=x**2","y**2=x"])   #新增圖例

ax.set_title('x and y',fontsize=20)  #設定標題
ax.set_xlabel("x label")  #設定x軸名稱
ax.set_ylabel("y label")  #設定y軸名稱
ax.set_xlim(-1,1)  #設定x軸範圍
ax.set_ylim(-1,1)  #設定y軸範圍

# ax.grid(linewidth=3,linestyle=':',color='purple',alpha=0.5)

plt.show()

8.其他
matplotlib除了生成上述的線性圖以外還可以生成其他箱圖等特殊的影像形式,具體可以參考matplotlib的官方文件https://matplotlib.org/stable/tutorials/index.html