您現在的位置是:首頁 > 足球

matplotlib繪圖的核心原理講解

  • 由 CSDN 發表于 足球
  • 2021-12-04
簡介show()結果如下:結果分析:在前面的敘述中,我們已經說過,想要使用matplotlib繪圖,必須先要建立一個figure(畫布)物件,然後還要有axes(座標系)

matplotlib什麼意思

matplotlib繪圖的核心原理講解

作者:朱小五

來自:凹凸資料(ID:alltodata)

matplotlib是基於Python語言的開源專案,旨在為Python提供一個數據繪圖包。

相信大家都用過它來資料視覺化,之前我還分享過25個常用Matplotlib圖的Python程式碼。

可是你瞭解過它繪圖的核心原理嗎?

那不如來看看黃同學的這篇文章吧!

核心原理講解

使用matplotlib繪圖的原理,主要就是理解figure(畫布)、axes(座標系)、axis(座標軸)三者之間的關係。

matplotlib繪圖的核心原理講解

以“美院學生張三寫生畫畫”為例,來說明這三者之間的關係。

張三的畫板

matplotlib繪圖的核心原理講解

首先,張三想要畫畫,是不是需要在畫板上面準備一張畫布。對比到matplotlib中,就相當於初始化了一張figure(畫布),我們畫的任何圖形,都是在這張figure(畫布)上操作的。

接著,張三需要給figure(畫布)分配不同的區域,指定哪一塊兒究竟該畫什麼。對比到matplotlib中,就是需要指定axes(座標系),每一個axes(座標系)相當於一張畫布上的一塊區域。一張畫布上,可以分配不同區域,也就是說,一張畫布,可以指定多個axes(座標系)。

最後,張三就是在分配好的不同區域上進行圖形繪製了,在一張畫布上,畫的最多的應該就是2D圖,也可以畫3D圖,如圖所示,張三在區域一畫了一個小狗,在區域二畫了一個小貓,在區域三畫了一個光頭強。對比到matplotlib中,我們在axes1中畫了一個條形圖,在axes2中畫了一個餅圖,在axes3中畫了一個折線圖。當是2D圖時,都會有一個X軸和一個Y軸;當是3D圖時,都會有一個X軸、一個Y軸和一個Z軸,這個軸就是我們所說的“座標軸axis”。

matplotlib繪圖

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

結果如下:

matplotlib繪圖的核心原理講解

建立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繪圖的核心原理講解

結果分析:

在前面的敘述中,我們已經說過,想要使用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物件。

matplotlib繪圖的核心原理講解

③ 顯示建立figure物件:以後的文章會詳細講述佈局設定

# 手動建立一個figure物件

figure = plt。figure()

# 獲取每個位置的axes物件

axes1 = figure。add_subplot(2,1,1)

axes2 = figure。add_subplot(2,1,1)

如圖所示:

matplotlib繪圖的核心原理講解

舉例說明:

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()

結果如下:

matplotlib繪圖的核心原理講解

完整的繪圖步驟

① 導庫

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 字型相關

常見的繪圖技巧如上所示,這些繪圖技巧都能夠很好的幫助我們畫出更美觀、更直觀的圖形。

Top