中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
matplotlib繪圖的核心原理講解
轉(zhuǎn)自:凹凸數(shù)據(jù)

大家好,我是朱小五

matplotlib是基于Python語言的開源項(xiàng)目,旨在為Python提供一個數(shù)據(jù)繪圖包。

相信大家都用過它來數(shù)據(jù)可視化,之前我還分享過25個常用Matplotlib圖的Python代碼。

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

那不如來看看黃同學(xué)的這篇文章吧!


01


核心原理講解

使用matplotlib繪圖的原理,主要就是理解figure(畫布)、axes(坐標(biāo)系)、axis(坐標(biāo)軸)三者之間的關(guān)系。

以“美院學(xué)生張三寫生畫畫”為例,來說明這三者之間的關(guān)系。

張三的畫板

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

接著,張三需要給figure(畫布)分配不同的區(qū)域,指定哪一塊兒究竟該畫什么。對比到matplotlib中,就是需要指定axes(坐標(biāo)系),每一個axes(坐標(biāo)系)相當(dāng)于一張畫布上的一塊區(qū)域。一張畫布上,可以分配不同區(qū)域,也就是說,一張畫布,可以指定多個axes(坐標(biāo)系)。

最后,張三就是在分配好的不同區(qū)域上進(jìn)行圖形繪制了,在一張畫布上,畫的最多的應(yīng)該就是2D圖,也可以畫3D圖,如圖所示,張三在區(qū)域一畫了一個小狗,在區(qū)域二畫了一個小貓,在區(qū)域三畫了一個光頭強(qiáng)。對比到matplotlib中,我們在axes1中畫了一個條形圖,在axes2中畫了一個餅圖,在axes3中畫了一個折線圖。當(dāng)是2D圖時,都會有一個X軸和一個Y軸;當(dāng)是3D圖時,都會有一個X軸、一個Y軸和一個Z軸,這個軸就是我們所說的“坐標(biāo)軸axis”。

matplotlib繪圖

通過上述分析,總結(jié)如下:一個figure(畫布)上,可以有多個區(qū)域axes(坐標(biāo)系),我們在每個坐標(biāo)系上繪圖,也就是說每個axes(坐標(biāo)系)中,都有一個axis(坐標(biāo)軸)。

特別注意:在matplotlib中,figure畫布和axes坐標(biāo)軸并不能顯示的看見,我們能夠看到的就是一個axis坐標(biāo)軸的各種圖形。


02


matplotlib庫的安裝與導(dǎo)入

1)安裝

pip install matplotlib

2)導(dǎo)入相關(guān)庫

現(xiàn)在你不需要關(guān)注下面代碼具體是什么意思,有一個主觀印象即可。我將會在以后的文章中,給大家一一介紹你不懂的哪些參數(shù)。

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畫圖常見參數(shù)設(shè)置
mpl.rcParams['font.family'] = 'SimHei' # 設(shè)置字體
mpl.rcParams['axes.unicode_minus']=False # 用來正常顯示負(fù)號
plt.rcParams['font.sans-serif']=['SimHei'] # 用來正常顯示中文標(biāo)簽

# 嵌入式顯示圖形
%matplotlib inline

結(jié)果如下:


03


創(chuàng)建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()

結(jié)果如下:

結(jié)果分析:

在前面的敘述中,我們已經(jīng)說過,想要使用matplotlib繪圖,必須先要創(chuàng)建一個figure(畫布)對象,然后還要有axes(坐標(biāo)系)。但是觀察上述代碼,我們并沒有創(chuàng)建figure對象,那么怎么又可以畫圖呢?

對于上述疑問,接下來我們就要講述創(chuàng)建figure(畫布)的兩種方式。

2)創(chuàng)建figure(畫布)的兩種方式

* 隱式創(chuàng)建
* 顯示創(chuàng)建

① 隱式創(chuàng)建figure對象

當(dāng)?shù)谝淮螆?zhí)行plt.xxx()畫圖代碼時,系統(tǒng)會去判斷是否已經(jīng)有了figure對象,如果沒有,系統(tǒng)會自動創(chuàng)建一個figure對象,并且在這個figure之上,自動創(chuàng)建一個axes坐標(biāo)系(注意:默認(rèn)創(chuàng)建一個figure對象,一個axes坐標(biāo)系)。

也就是說,如果我們不設(shè)置figure對象,那么一個figure對象上,只能有一個axes坐標(biāo)系,即我們只能繪制一個圖形。

② 隱式創(chuàng)建figure對象存在的問題

優(yōu)勢:如果只是繪制一個小圖形,那么直接使用plt.xxx()的方式,會自動幫我們創(chuàng)建一個figure對象和一個axes坐標(biāo)系,這個圖形最終就是繪制在這個axes坐標(biāo)系之上的。

劣勢:如果我們想要在一個figure對象上,繪制多個圖形,那么我們就必須拿到每個個axes對象,然后調(diào)用每個位置上的axes對象,就可以在每個對應(yīng)位置的坐標(biāo)系上,進(jìn)行繪圖,如下圖所示。注意:如果figure對象是被默認(rèn)創(chuàng)建的,那么我們根本拿不到axes對象。因此,需要我們顯示創(chuàng)建figure對象。

③ 顯示創(chuàng)建figure對象:以后的文章會詳細(xì)講述布局設(shè)置

# 手動創(chuàng)建一個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()

結(jié)果如下:


04


完整的繪圖步驟

① 導(dǎo)庫

import matplotlib as mpl
import matplotlib.pyplot as plt

② 創(chuàng)建figure畫布對象

    如果繪制一個簡單的小圖形,我們可以不設(shè)置figure對象,使用默認(rèn)創(chuàng)建的
figure對象,當(dāng)然我們也可以顯示創(chuàng)建figure對象。
如果一張figure畫布上,需要繪制多個圖形。那么就必須顯示的創(chuàng)建figure
對象,然后得到每個位置上的axes對象,進(jìn)行對應(yīng)位置上的圖形繪制。

③ 根據(jù)figure對象進(jìn)行布局設(shè)置

1*1
1*2
2*1
2*2
...

④ 獲取對應(yīng)位置的axes坐標(biāo)系對象

figure = plt.figure()
axes1 = figure.add_subplot(2,1,1)
axes2 = figure.add_subplot(2,1,1)

⑤ 調(diào)用axes對象,進(jìn)行對應(yīng)位置的圖形繪制

這一步,是我們傳入數(shù)據(jù),進(jìn)行繪圖的一步。對于圖形的一些細(xì)節(jié)設(shè)置,都可
以在這一步進(jìn)行。

⑥ 顯示圖形

    plt.show()或figure.show()
如果在pycharm中繪圖的話,必須要加這句代碼,才能顯示。如果在notebook
中進(jìn)行繪圖,可以不用加這句代碼,而是自動顯示。

05


繪圖技巧(細(xì)節(jié)設(shè)置)

通過對matplotlib繪圖的原理,有所了解之后,我們需要學(xué)習(xí)的就是常見的matplotlib繪圖技巧。

* figure 畫布
* axes 坐標(biāo)系,一個畫布上可以有多個坐標(biāo)系
* axis 坐標(biāo)軸,一個坐標(biāo)系中可以有多個坐標(biāo)軸,一般都是二維平面坐標(biāo)系,或者三維立體坐標(biāo)系
* title 標(biāo)題
* legend 圖例
* grid 背景網(wǎng)格
* tick 刻度
* axis label 坐標(biāo)軸名稱
* tick label 刻度名稱
* major tick label 主刻度標(biāo)簽
* minor tick label 副刻度標(biāo)簽
* line 線
* style 線條樣式
* marker 點(diǎn)標(biāo)記
* font 字體相關(guān)

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

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
matplotlib繪圖的核心原理講解(超詳細(xì))
第91天:Python matplotlib introduction
淺談matplotlib.pyplot與axes的關(guān)系
Matplotlib數(shù)據(jù)可視化:入門及組件介紹
對圖像組成不了解?這樣學(xué)習(xí)Matplotlib必走彎路!
人人都能看懂的Matplotlib繪圖原理講解!
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服