您現在的位置是:首頁 > 足球
matplotlib繪圖的核心原理講解
- 由 CSDN 發表于 足球
- 2021-12-04
matplotlib什麼意思
作者:朱小五
來自:凹凸資料(ID:alltodata)
matplotlib是基於Python語言的開源專案,旨在為Python提供一個數據繪圖包。
相信大家都用過它來資料視覺化,之前我還分享過25個常用Matplotlib圖的Python程式碼。
可是你瞭解過它繪圖的核心原理嗎?
那不如來看看黃同學的這篇文章吧!
核心原理講解
使用matplotlib繪圖的原理,主要就是理解figure(畫布)、axes(座標系)、axis(座標軸)三者之間的關係。
以“美院學生張三寫生畫畫”為例,來說明這三者之間的關係。
張三的畫板
首先,張三想要畫畫,是不是需要在畫板上面準備一張畫布。對比到matplotlib中,就相當於初始化了一張figure(畫布),我們畫的任何圖形,都是在這張figure(畫布)上操作的。
接著,張三需要給figure(畫布)分配不同的區域,指定哪一塊兒究竟該畫什麼。對比到matplotlib中,就是需要指定axes(座標系),每一個axes(座標系)相當於一張畫布上的一塊區域。一張畫布上,可以分配不同區域,也就是說,一張畫布,可以指定多個axes(座標系)。
最後,張三就是在分配好的不同區域上進行圖形繪製了,在一張畫布上,畫的最多的應該就是2D圖,也可以畫3D圖,如圖所示,張三在區域一畫了一個小狗,在區域二畫了一個小貓,在區域三畫了一個光頭強。對比到matplotlib中,我們在axes1中畫了一個條形圖,在axes2中畫了一個餅圖,在axes3中畫了一個折線圖。當是2D圖時,都會有一個X軸和一個Y軸;當是3D圖時,都會有一個X軸、一個Y軸和一個Z軸,這個軸就是我們所說的“座標軸axis”。
matplotlib繪圖
透過上述分析,總結如下:一個figure(畫布)上,可以有多個區域axes(座標系),我們在每個座標系上繪圖,也就是說每個axes(座標系)中,都有一個axis(座標軸)。
特別注意:在matplotlib中,figure畫布和axes座標軸並不能顯示的看見,我們能夠看到的就是一個axis座標軸的各種圖形。
matplotlib庫的安裝與匯入
1)安裝
pip install matplotlib
2)匯入相關庫
現在你不需要關注下面程式碼具體是什麼意思,有一個主觀印象即可。我將會在以後的文章中,給大家一一介紹你不懂的哪些引數。
import numpy as np
import pandas as pd
import matplotlib as mpl
import matplotlib。pyplot as plt
# 排除警告資訊
import warnings
warnings。filterwarnings(“ignore”)
# 列印版本資訊
display(np。__version__)
display(pd。__version__)
display(mpl。__version__)
# matplotlib畫圖常見引數設定
mpl。rcParams[“font。family”] = “SimHei” # 設定字型
mpl。rcParams[“axes。unicode_minus”]=False # 用來正常顯示負號
plt。rcParams[‘font。sans-serif’]=[‘SimHei’] # 用來正常顯示中文標籤
# 嵌入式顯示圖形
%matplotlib inline
結果如下:
建立figure(畫布)的兩種方式
1)繪製一個最簡單的折線圖
import matplotlib as mpl
import matplotlib。pyplot as plt
x = [1,3,5,7]
y = [4,9,6,8]
plt。plot(x,y)
plt。show()
結果如下:
結果分析:
在前面的敘述中,我們已經說過,想要使用matplotlib繪圖,必須先要建立一個figure(畫布)物件,然後還要有axes(座標系)。但是觀察上述程式碼,我們並沒有建立figure物件,那麼怎麼又可以畫圖呢?
對於上述疑問,接下來我們就要講述建立figure(畫布)的兩種方式。
2)建立figure(畫布)的兩種方式
* 隱式建立
* 顯示建立
① 隱式建立figure物件
當第一次執行plt。xxx()畫圖程式碼時,系統會去判斷是否已經有了figure物件,如果沒有,系統會自動建立一個figure物件,並且在這個figure之上,自動建立一個axes座標系(注意:預設建立一個figure物件,一個axes座標系)。
也就是說,如果我們不設定figure物件,那麼一個figure物件上,只能有一個axes座標系,即我們只能繪製一個圖形。
② 隱式建立figure物件存在的問題
優勢:如果只是繪製一個小圖形,那麼直接使用plt。xxx()的方式,會自動幫我們建立一個figure物件和一個axes座標系,這個圖形最終就是繪製在這個axes座標系之上的。
劣勢:如果我們想要在一個figure物件上,繪製多個圖形,那麼我們就必須拿到每個個axes物件,然後呼叫每個位置上的axes物件,就可以在每個對應位置的座標系上,進行繪圖,如下圖所示。注意:如果figure物件是被預設建立的,那麼我們根本拿不到axes物件。因此,需要我們顯示建立figure物件。
③ 顯示建立figure物件:以後的文章會詳細講述佈局設定
# 手動建立一個figure物件
figure = plt。figure()
# 獲取每個位置的axes物件
axes1 = figure。add_subplot(2,1,1)
axes2 = figure。add_subplot(2,1,1)
如圖所示:
舉例說明:
figure = plt。figure()
axes1 = figure。add_subplot(2,1,1)
axes2 = figure。add_subplot(2,1,1)
axes1。plot([1,3,5,7],[4,9,6,8])
axes2。plot([1,2,4,5],[8,4,6,2])
figure。show()
結果如下:
完整的繪圖步驟
① 導庫
import matplotlib as mpl
import matplotlib。pyplot as plt
② 建立figure畫布物件
如果繪製一個簡單的小圖形,我們可以不設定figure物件,使用預設建立的
figure物件,當然我們也可以顯示建立figure物件。
如果一張figure畫布上,需要繪製多個圖形。那麼就必須顯示的建立figure
物件,然後得到每個位置上的axes物件,進行對應位置上的圖形繪製。
③ 根據figure物件進行佈局設定
1*1
1*2
2*1
2*2
。。。
④ 獲取對應位置的axes座標系物件
figure = plt。figure()
axes1 = figure。add_subplot(2,1,1)
axes2 = figure。add_subplot(2,1,1)
⑤ 呼叫axes物件,進行對應位置的圖形繪製
這一步,是我們傳入資料,進行繪圖的一步。對於圖形的一些細節設定,都可
以在這一步進行。
⑥ 顯示圖形
plt。show()或figure。show()
如果在pycharm中繪圖的話,必須要加這句程式碼,才能顯示。如果在notebook
中進行繪圖,可以不用加這句程式碼,而是自動顯示。
繪圖技巧(細節設定)
透過對matplotlib繪圖的原理,有所瞭解之後,我們需要學習的就是常見的matplotlib繪圖技巧。
* figure 畫布
* axes 座標系,一個畫布上可以有多個座標系
* axis 座標軸,一個座標系中可以有多個座標軸,一般都是二維平面座標系,或者三維立體座標系
* title 標題
* legend 圖例
* grid 背景網格
* tick 刻度
* axis label 座標軸名稱
* tick label 刻度名稱
* major tick label 主刻度標籤
* minor tick label 副刻度標籤
* line 線
* style 線條樣式
* marker 點標記
* font 字型相關
常見的繪圖技巧如上所示,這些繪圖技巧都能夠很好的幫助我們畫出更美觀、更直觀的圖形。