欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

淺談matplotlib.pyplot與axes的關(guān)系

 更新時間:2020年03月06日 11:19:08   作者:小平友littlePING  
這篇文章主要介紹了淺談matplotlib.pyplot與axes的關(guān)系,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

最近在學(xué)習(xí)數(shù)據(jù)可視化,梳理一下其中一些諸如pandas繪圖、matplotlib繪圖、pyplot(plt)、axes等概念。

重要的事情說三遍:axes不是axis!axes不是axis!axes不是axis!
重要的事情說三遍:pyplot是接口不是對象!pyplot是接口不是對象!pyplot是接口不是對象!

很多書上一上來就直接import matplotlib.pypltot as plt,然后就教你plt.xxx()。這種方式固然沒錯,可問題就出在了plt只是一個interface,只是一個接口,連對象都算不上(仔細(xì)回想,你確實沒有實例化過任何一個名叫plt類型的對象)這給本來就對面向?qū)ο缶幊滩⒉缓苁煜さ奈?em>帶來無窮無盡的困擾。plt這個接口的意義在于:

  • 通過接口直接畫圖(這時候我們把這個接口看成一個黑盒,根本不要去管其中有些什么對象類型)
  • 通過接口實例化別的類型的對象(如figure類型 axes類型等)

1.通過plt.xxx()直接繪圖

就像各種教程和書上的常規(guī)操作一樣,我們可以用plt.plot(), plt.bar()等繪制不同類型的圖(部分總結(jié)如下表)

表一 plt中用于繪圖的部分函數(shù)

函數(shù)名 作用
plt.bar() 條形圖
plt.barh() 橫排條形圖
plt.boxplot() 箱線圖(plt.box()是另一個函數(shù))
plt.hist() 頻率直方圖
plt.plot() 折線圖

我們可以用plt的其他一些函數(shù)來對圖表的標(biāo)題等進(jìn)行設(shè)置(部分總結(jié)如下表)

表二 plt中用于設(shè)置的部分函數(shù)

函數(shù)名 作用
plt.title() 設(shè)置圖表標(biāo)題
plt.grid() 設(shè)置圖表網(wǎng)格
plt.xlabel();plt.ylabel 設(shè)置x;y軸標(biāo)題
plt.xticks();plt.yticks() 設(shè)置x;y軸刻度
plt.xlim();plt.ylim() 設(shè)置x;y軸范圍
plt.annotate() 設(shè)置標(biāo)注

(具體的參數(shù)和用法詳見 https://matplotlib.org/api/pyplot_summary.html

用plt繪圖的方便之處,同樣也是它最令人迷惑的地方,就是它沒有一個顯性的對象。
我們甚至可以調(diào)用pandas繪圖以后,用表二中的plt函數(shù)來對pandas生成的這個圖表進(jìn)行設(shè)置。

例程如下:

import matplotlib.pyplot as plt
from pandas import Series
data = Series([1.47,1.62,1.78,1.94,2.38,2.60],index=['2012','2013','2014','2015','2016','2017'])
#注意下一行的對象是'data',它是一個series對象,調(diào)用的是pandas繪圖函數(shù)
data.plot(label='income', color = 'r', linestyle=':', marker = 's')#具體的pandas繪圖之后會細(xì)講
#但接下來我們甚至可以調(diào)用plt的函數(shù)對它進(jìn)行設(shè)置
plt.title('Income chart')
plt.xlabel('Year')
plt.ylabel('income')
plt.annotate('Largest point',xy=(5,2.60),xytext=(3,2.5), arrowprops=dict(arrowstyle='->'))
plt.show()

上面這個例子就展示了pyplot(plt)的特點,不用指明對象就能進(jìn)行畫圖和設(shè)置,當(dāng)我們在同一個程序中的圖比較少的時候這是方便的,但當(dāng)我們同一個程序中的圖很多的時候,這種沒有顯性對象的方式會導(dǎo)致我們沒有辦法重新調(diào)用之前的圖(因為沒有對象名)也會給人一種很不踏實的感覺。

2.實例化figure和axes對象后繪圖

就像前文提到的,plt只是一個接口而不是對象。
在matplotlib中,有兩個重要的對象類型:figure對象可以把它想成一張空白圖紙,在上面可以繪制一個或多個axes對象(還可以有其他對象等)。axes對象是一個圖像的主要部分(它包括了圖線、xy軸等部分)。
我們可以使用plt接口生成figure對象和axes對象,然后對axes對象調(diào)用方法來實現(xiàn)畫圖和設(shè)置。
總體思路是:

  1. 實例化figure對象
  2. 實例化axes對象
  3. 對axes對象調(diào)用方法進(jìn)行畫圖和設(shè)置

例程如下:

import matplotlib.pyplot as plt
from pandas import Series
data = Series([1.47,1.62,1.78,1.94,2.38,2.60],index=['2012','2013','2014','2015','2016','2017'])
#調(diào)用plt接口,實例化figure1對象
figure1 = plt.figure(facecolor='w')#faceclolr設(shè)置背景顏色
#實例化ax1對象
ax1 = figure1.add_subplot(111)#ax1是figure1的第1行第一列的第1張圖表
#注意下一行的對象是'ax1',它是一個axes對象,調(diào)用的是matplotlib.axes繪圖函數(shù)
ax1.plot(data,label='income', color = 'r', linestyle=':', marker = 's')
#接下來我們調(diào)用ax1的方法對它進(jìn)行設(shè)置
ax1.set_title('Income chart')
ax1.set_xlabel('Year')
ax1.set_ylabel('income')
ax1.annotate('Largest point',xy=(5,2.60),xytext=(3,2.5), arrowprops=dict(arrowstyle='->'))

用這種方式畫出來的圖,每一個對象都有它自己的名字,方便后面繼續(xù)調(diào)用、修改。代碼也就多了兩行實例化的過程,并沒有麻煩很多,個人很喜歡用這種方式畫圖(也給人一種很踏實的感覺)。

類比上面的表一和表二,給出對于axes對象的方法函數(shù)表:

表三 axes對象用于繪圖的部分方法函數(shù)

函數(shù)名 作用
ax.bar() 條形圖
ax.barh() 橫排條形圖
ax.boxplot() 箱線圖
ax.hist() 頻率直方圖
ax.plot() 折線圖

表四 axes對象中用于設(shè)置的部分方法函數(shù)

函數(shù)名 作用
ax.set_title() 設(shè)置圖表標(biāo)題
ax.set_xlabel(); ax.set_ylabel 設(shè)置x;y軸標(biāo)題
ax.set_xticks(); ax.set_yticks() 設(shè)置x;y軸刻度
ax.set_xlim(); ax.set_ylim() 設(shè)置x;y軸范圍
ax.annotate() 設(shè)置標(biāo)注

(具體的參數(shù)和用法詳見 https://matplotlib.org/api/axes_api.html )

注意表一和表三,表二和表四的異同:

  1. 表一表二中的plt是固定的名字,不論畫什么都是plt.xxx(),而表三和表四中ax.xxx()中的ax要改成你實例的對象名。
  2. 注意對比表二和表四,很多作用相同的東西,跑到了axes這里要多加一個set_

用實例化axes的方式畫圖很重要,因為多子圖的繪制更是需要依賴axes對象。

我還會分兩期分別介紹一下axes與多子圖的繪制和axes與pandas繪圖的關(guān)系。

到此這篇關(guān)于淺談matplotlib.pyplot與axes的關(guān)系的文章就介紹到這了,更多相關(guān)matplotlib.pyplot axes內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 如何使用python?docx模塊操作word文檔

    如何使用python?docx模塊操作word文檔

    這篇文章主要介紹了如何使用python?docx模塊操作word文檔,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-09-09
  • Pytorch矩陣乘法(torch.mul() 、 torch.mm() 和torch.matmul()的區(qū)別)

    Pytorch矩陣乘法(torch.mul() 、 torch.mm() 和torch.m

    在深度學(xué)習(xí)和神經(jīng)網(wǎng)絡(luò)的世界里,矩陣乘法是一項至關(guān)重要的操作,本文主要介紹了Pytorch矩陣乘法,包含了torch.mul() 、 torch.mm() 和torch.matmul()的區(qū)別,具有一定的參考價值,感興趣的可以了解一下
    2024-03-03
  • Python request post上傳文件常見要點

    Python request post上傳文件常見要點

    這篇文章主要介紹了Python request post上傳文件常見要點,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-11-11
  • 詳解Python中 sys.argv[]的用法簡明解釋

    詳解Python中 sys.argv[]的用法簡明解釋

    本篇文章主要介紹了詳解Python中 sys.argv[]的用法簡明解釋,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-12-12
  • Python四款GUI圖形界面庫介紹

    Python四款GUI圖形界面庫介紹

    這篇文章介紹了Python的四款GUI圖形界面庫,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • Python面向?qū)ο笾^承原理與用法案例分析

    Python面向?qū)ο笾^承原理與用法案例分析

    這篇文章主要介紹了Python面向?qū)ο笾^承原理與用法,結(jié)合具體案例形式分析了Python面向?qū)ο蟪绦蛟O(shè)計中繼承的原理、使用方法及相關(guān)操作注意事項,需要的朋友可以參考下
    2019-12-12
  • 淺析python實現(xiàn)布隆過濾器及Redis中的緩存穿透原理

    淺析python實現(xiàn)布隆過濾器及Redis中的緩存穿透原理

    本文帶你了解了位圖的實現(xiàn),布隆過濾器的原理及 Python 中的使用,以及布隆過濾器如何應(yīng)對 Redis 中的緩存穿透,相信你對布隆過濾器已經(jīng)有了一定的認(rèn)識
    2021-09-09
  • python爬蟲之requests庫使用代理方式

    python爬蟲之requests庫使用代理方式

    這篇文章主要介紹了python爬蟲之requests庫使用代理方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • python函數(shù)返回多個值的示例方法

    python函數(shù)返回多個值的示例方法

    這篇文章主要介紹了python函數(shù)返回多個值的方法,大家參考使用
    2013-12-12
  • 10個python爬蟲入門實例(小結(jié))

    10個python爬蟲入門實例(小結(jié))

    這篇文章主要介紹了10個python爬蟲入門實例(小結(jié)),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11

最新評論