国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

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

大家好,我是朱小五

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

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

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

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


01


核心原理講解

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

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

張三的畫板

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

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

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

matplotlib繪圖

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

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


02


matplotlib庫的安裝與導入

1)安裝

pip install matplotlib

2)導入相關庫

現(xià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ù)設置
mpl.rcParams['font.family'] = 'SimHei' # 設置字體
mpl.rcParams['axes.unicode_minus']=False # 用來正常顯示負號
plt.rcParams['font.sans-serif']=['SimHei'] # 用來正常顯示中文標簽

# 嵌入式顯示圖形
%matplotlib inline

結果如下:


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

結果如下:

結果分析:

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

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

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

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

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

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

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

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

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

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

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

# 手動創(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()

結果如下:


04


完整的繪圖步驟

① 導庫

import matplotlib as mpl
import matplotlib.pyplot as plt

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

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

③ 根據(jù)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對象,進行對應位置的圖形繪制

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

⑥ 顯示圖形

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

05


繪圖技巧(細節(jié)設置)

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

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

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

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

聯(lián)系客服