4.7Python數(shù)據(jù)處理篇之Matplotlib系列(七)---matplotlib原理分析

目錄

[TOC]

前言

學習matplotlib有一段時間了章钾,總感覺學不到本質(zhì)的東西穿铆,抓不到主要的重點,還是感覺有些吃力实牡,畫的圖千變?nèi)f化陌僵,總不能一一學會吧,今天我們就來總結(jié)一下创坞,matplotlib本質(zhì)的東西碗短,讓我們更能在全局上掌握matplotlib庫。

(一)總框架分析

在matplotlib庫里题涨,總分成兩種繪圖方法

  1. 方法一:函數(shù)式繪圖
  2. 方法二:面向?qū)ο笫嚼L圖

(二)函數(shù)式的繪圖

1.說明:

在matplotlib.pyplot里是封裝好的函數(shù)偎谁,用戶可以直接調(diào)用函數(shù)進行繪圖。

一般的纲堵,我們約定 matplotlib.pyplot 取別名為 plt

其模塊下主要定義如下兩方面的函數(shù):

  1. 操作類的函數(shù):對于畫布巡雨,圖,子圖席函,坐標軸铐望,圖例,背景茂附,網(wǎng)格等的操作正蛙。

如:plt.ylabel(), plt.xlabel(), plot.yscale(), plt.legend(), plt.title(), plt.text()……

  1. 繪圖類的函數(shù):畫折線圖,散點圖营曼,條形圖乒验,直方圖,餅狀圖等特點圖的繪制函數(shù)蒂阱。

如:plt.scatter, plt.plot(), plt.bar, plot.pie(), plt.hise()……

具體可以參考官方網(wǎng)站

https://matplotlib.org/api/_as_gen/matplotlib.pyplot.html?highlight=matplotlib%20pyplot#module-matplotlib.pyplot

2.函數(shù)繪圖的缺優(yōu)點

(1)缺點:

其實函數(shù)式的繪圖本質(zhì)上還是在matplotlib對象的封裝徊件,在對象的基礎(chǔ)上多了一層函數(shù)的調(diào)用奸攻,

其定制性并不是很強,都是封裝好的函數(shù)虱痕。

(2)優(yōu)點:

適合一般用戶繪圖睹耐,要求不是很高,定制性不是很強的繪圖部翘。

新手容易上手硝训,不需要了解內(nèi)部的對象問題。

3.繪圖類的函數(shù)

matplotlib繪圖不止這些新思,在此只舉例了大部分

序號 繪圖函數(shù)(plt.xxx) 說明
1 acorr() 繪制x的自相關(guān)圖
2 angle_spectrum() 繪制角度譜圖
3 bar() 制作條形圖
4 barbs() 繪制倒鉤的二維場圖
5 barh() 制作水平條形圖窖梁。
6 boxplot() 制作一個盒子和胡須圖
7 broken_barh() 繪制一個水平的矩形序列圖
8 clabel() 繪制等高線圖
9 cohere() 繪制xy之間的一致性圖
10 csd() 繪制交叉譜密度圖
11 eventplot() 繪制相同的平行線
12 fill() 繪制填充多邊形圖
13 hexbin() 制作六邊形分箱圖
14 hist() 繪制直方圖
15 hist2d() 制作2D直方圖
16 magnitude_spectrum() 繪制幅度譜圖
17 phase_spectrum() 繪制相位譜圖
18 pie() 繪制餅圖
19 plot() 繪制折線圖
20 plot_date() 繪制包含日期的數(shù)據(jù)圖
21 quiver() 繪制一個二維箭頭場圖
22 scatter() 繪制散點圖
23 specgram() 繪制頻譜圖
24 stackplot() 繪制堆積區(qū)域圖
25 streamplot() 繪制矢量流的流線型圖
26 triplot() 繪制非結(jié)構(gòu)化三角形網(wǎng)格作為線條圖

4.操作類的函數(shù)

操作不止這些,在這只是例了大部分

序號 操作函數(shù)(plt.xxx) 說明
1 arrow() 向軸添加箭頭
2 axes() 控制軸的范圍
3 axhline() 在軸上添加水平線
4 axhspan() 在軸上添加水平跨度(矩形)
5 axvline() 在軸上添加垂直線
6 axvspan() 在軸上添加垂直跨度(矩形)
7 box() 打開或關(guān)閉軸框
8 figlegend() 在圖中放置一個圖例
9 figtext() 添加文字到圖
10 grid() 配置網(wǎng)格線
11 legend() 在軸上放置圖例
12 locator_params() 控制軸的刻度緊密度夹囚。
13 loglog() 在x軸和y軸上繪制具有對數(shù)縮放的繪圖
14 margins() 設(shè)置繪圖到框的邊距
15 minorticks_on() 在軸上顯示次要刻度
16 minorticks_off() 從軸上移除次要刻度
17 subplot() 在當前圖中添加子圖
18 subplot2grid() 在常規(guī)網(wǎng)格內(nèi)的特定位置創(chuàng)建軸
19 subplots() 創(chuàng)建一個圖形和一組子圖
20 subplots_adjust() 調(diào)整子圖布局
21 suptitle() 為圖中添加居中標題
22 table() 將表添加到當前軸
23 text() 向軸添加文本
24 tick_params() 更改刻度纵刘,刻度標簽和網(wǎng)格線的外觀
25 title() 設(shè)置軸的標題
26 twinx() 制作共享x軸的第二
27 twiny() 制作共享y軸的第二個軸
28 xlabel() 設(shè)置x軸的標簽
29 xlim() 獲取或設(shè)置當前軸的x限制
30 xscale() 設(shè)置x軸刻度
31 xticks() 獲取或設(shè)置當前刻度線位置和x軸標簽
32 ylabel() 設(shè)置y軸的標簽
33 ylim() 獲取或設(shè)置當前軸的y限制
34 yscale() 設(shè)置y軸刻度
35 yticks() 獲取或設(shè)置y軸的當前刻度位置和標簽

5.例子:

(1)源代碼

# 導入模塊
import matplotlib.pyplot as plt
import numpy as np

# 數(shù)據(jù)
x = np.linspace(0, 2*np.pi, 1000)
y = np.sin(x**2)

# 繪圖
plt.plot(x, y)

# 顯示
plt.show()

(2)顯示效果

03.png

(三)面向?qū)ο笫降睦L圖

1.基本概念

面向?qū)ο笫降睦L圖,才是matplotlib繪圖最自然的方式荸哟,不過需要先了解一些基本的概念假哎。

可參考官方介紹:https://matplotlib.org/tutorials/introductory/usage.html#sphx-glr-tutorials-introductory-usage-py

下圖是matplotlib基本的組成部分

image

figure(圖形)

axes(子圖形)

title(標題)

legend(圖例)

Major tick(大標尺刻度)

Minor tick(小標尺刻度)

Major tick label(大標尺刻度數(shù)值)

Minor tick label(小標尺刻度數(shù)值)

Y axis label(y軸指標說明)

X axis label(x軸指標說明)

Line(線型圖)

Markers(數(shù)據(jù)標注點)

Grid(格子)等等

2.基本對象

(1)Figure

  1. 整個圖形即是一個Figure對象,即一個彈出的繪圖的窗口鞍历,便是一個figure舵抹。
  2. Figure對象至少包含一個子圖,也就是Axes對象劣砍。
  3. Figure對象包含一些特殊的Artist對象惧蛹,如title標題、圖例legend刑枝。
  4. Figure對象包含畫布canvas對象香嗓。 canvas對象一般不可見,通常無需直接操作該對象装畅,matplotlib程序?qū)嶋H繪圖時需要調(diào)用該對象陶缺。

(2)Axes

  1. 字面上理解,axes是數(shù)據(jù)軸axis的復數(shù)洁灵,但它并不是指數(shù)據(jù)軸饱岸,而是子圖對象』涨В可以這樣理解苫费,每一個子圖都有x和y軸,axes則用于代表這兩個數(shù)據(jù)軸所對應(yīng)的一個子圖對象双抽。
  2. 常用方法set_xlim()以及set_ylim():
    1. 設(shè)置子圖x軸和y軸對應(yīng)的數(shù)據(jù)范圍百框。
    2. set_title():設(shè)置子圖的標題。
    3. set_xlabel()以及set_ylable():
    4. 設(shè)置子圖x軸和y軸指標的描述說明牍汹。

(3)Axis

  1. Axis是數(shù)據(jù)軸對象铐维,主要用于控制數(shù)據(jù)軸上刻度位置和顯示數(shù)值柬泽。
  2. Axis有Locator和Formatter兩個子對象,分別用于控制刻度位置和顯示數(shù)值嫁蛇。

(4)Artist

  1. 基本上所有的對象都是一個Artist對象锨并,包括Figure對象、Axes對象和Axis對象睬棚,可以將Artist理解為一個基本類第煮。
  2. 當提交代碼,圖像最終呈現(xiàn)時抑党,所有的artist對象都會繪制于canvas畫布上

層級結(jié)構(gòu)圖:

02.png

(yaxis同樣有tick, label和tick label包警,沒有畫出)

3.面向?qū)ο笫嚼L圖的缺優(yōu)

(1)缺點:

對于新手不友好,感念混淆底靠,不易掌握害晦,上手慢。

(2)優(yōu)點:

可定制性強暑中,靈活壹瘟,自然,流暢痒芝。

4.例子:

(1)源代碼

# 導入模塊
import matplotlib.pyplot as plt
import numpy as np

# 數(shù)據(jù)
x = np.linspace(0, 2*np.pi, 1000)
y = np.sin(x**2)

# 創(chuàng)建一張圖
fig, ax = plt.subplots(1, 1)

plt.plot(x, y)

# 顯示
plt.show()

(2)輸出效果

[圖片上傳失敗...(image-66cc5e-1552302327631)]

參考網(wǎng)站

【1】python matplotlib畫圖教程學習:使用介紹https://baijiahao.baidu.com/s?id=1614559225877861604&wfr=spider&for=pc

【2】matplotlib核心剖析:https://blog.csdn.net/zchshhh/article/details/78215646

作者:Mark

日期:2019/03/11 周一

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市牵素,隨后出現(xiàn)的幾起案子严衬,更是在濱河造成了極大的恐慌,老刑警劉巖笆呆,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件请琳,死亡現(xiàn)場離奇詭異,居然都是意外死亡赠幕,警方通過查閱死者的電腦和手機俄精,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來榕堰,“玉大人竖慧,你說我怎么就攤上這事∧媛牛” “怎么了圾旨?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長魏蔗。 經(jīng)常有香客問我砍的,道長,這世上最難降的妖魔是什么莺治? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任廓鞠,我火速辦了婚禮帚稠,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘床佳。我一直安慰自己滋早,他們只是感情好,可當我...
    茶點故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布夕土。 她就那樣靜靜地躺著馆衔,像睡著了一般。 火紅的嫁衣襯著肌膚如雪怨绣。 梳的紋絲不亂的頭發(fā)上角溃,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天,我揣著相機與錄音篮撑,去河邊找鬼减细。 笑死,一個胖子當著我的面吹牛赢笨,可吹牛的內(nèi)容都是我干的未蝌。 我是一名探鬼主播,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼茧妒,長吁一口氣:“原來是場噩夢啊……” “哼萧吠!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起桐筏,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤纸型,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后梅忌,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體狰腌,經(jīng)...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年牧氮,在試婚紗的時候發(fā)現(xiàn)自己被綠了琼腔。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,711評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡踱葛,死狀恐怖丹莲,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情尸诽,我是刑警寧澤圾笨,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站逊谋,受9級特大地震影響擂达,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一板鬓、第九天 我趴在偏房一處隱蔽的房頂上張望悲敷。 院中可真熱鬧,春花似錦俭令、人聲如沸后德。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽瓢湃。三九已至,卻和暖如春赫蛇,著一層夾襖步出監(jiān)牢的瞬間绵患,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工悟耘, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留落蝙,地道東北人。 一個月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓暂幼,卻偏偏與公主長得像筏勒,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子旺嬉,可洞房花燭夜當晚...
    茶點故事閱讀 44,611評論 2 353