中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

matplotlib繪圖中pyplot和axes的特點

發布時間:2020-05-25 20:59:34 來源:億速云 閱讀:285 作者:鴿子 欄目:編程語言

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

  很多書上一上來就直接import matplotlib.pypltot as plt,然后就教你plt.xxx()。這種方式固然沒錯,可問題就出在了plt只是一個interface,只是一個接口,連對象都算不上(仔細回想,你確實沒有實例化過任何一個名叫plt類型的對象)這給本來就對面向對象編程并不很熟悉的我帶來無窮無盡的困擾。plt這個接口的意義在于:

  通過接口直接畫圖(這時候我們把這個接口看成一個黑盒,根本不要去管其中有些什么對象類型)

  通過接口實例化別的類型的對象(如figure類型 axes類型等)

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

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

  表一 plt中用于繪圖的部分函數

  函數名  作用

  plt.bar()  條形圖

  plt.barh()  橫排條形圖

  plt.boxplot()  箱線圖(plt.box()是另一個函數)

  plt.hist()  頻率直方圖

  plt.plot()  折線圖

  我們可以用plt的其他一些函數來對圖表的標題等進行設置(部分總結如下表)

  表二 plt中用于設置的部分函數

  函數名  作用

  plt.title()  設置圖表標題

  plt.grid()  設置圖表網格

  plt.xlabel();plt.ylabel  設置x;y軸標題

  plt.xticks();plt.yticks()  設置x;y軸刻度

  plt.xlim();plt.ylim()  設置x;y軸范圍

  plt.annotate()  設置標注

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

  用plt繪圖的方便之處,同樣也是它最令人迷惑的地方,就是它沒有一個顯性的對象。

  我們甚至可以調用pandas繪圖以后,用表二中的plt函數來對pandas生成的這個圖表進行設置。

  例程如下:

  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對象,調用的是pandas繪圖函數

  data.plot(label='income', color = 'r', linestyle=':', marker = 's')#具體的pandas繪圖之后會細講

  #但接下來我們甚至可以調用plt的函數對它進行設置

  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)的特點,不用指明對象就能進行畫圖和設置,當我們在同一個程序中的圖比較少的時候這是方便的,但當我們同一個程序中的圖很多的時候,這種沒有顯性對象的方式會導致我們沒有辦法重新調用之前的圖(因為沒有對象名)也會給人一種很不踏實的感覺。

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

  就像前文提到的,plt只是一個接口而不是對象。

  在matplotlib中,有兩個重要的對象類型:figure對象可以把它想成一張空白圖紙,在上面可以繪制一個或多個axes對象(還可以有其他對象等)。axes對象是一個圖像的主要部分(它包括了圖線、xy軸等部分)。

  我們可以使用plt接口生成figure對象和axes對象,然后對axes對象調用方法來實現畫圖和設置。

  總體思路是:鄭州婦科醫院哪家好 https://yiyuan.120ask.com/zzfck/

  實例化figure對象

  實例化axes對象

  對axes對象調用方法進行畫圖和設置

  例程如下:

  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'])

  #調用plt接口,實例化figure1對象

  figure1 = plt.figure(facecolor='w')#faceclolr設置背景顏色

  #實例化ax1對象

  ax1 = figure1.add_subplot(111)#ax1是figure1的第1行第一列的第1張圖表

  #注意下一行的對象是'ax1',它是一個axes對象,調用的是matplotlib.axes繪圖函數

  ax1.plot(data,label='income', color = 'r', linestyle=':', marker = 's')

  #接下來我們調用ax1的方法對它進行設置

  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='->'))

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

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

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

  函數名  作用

  ax.bar()  條形圖

  ax.barh()  橫排條形圖

  ax.boxplot()  箱線圖

  ax.hist()  頻率直方圖

  ax.plot()  折線圖

  表四 axes對象中用于設置的部分方法函數

  函數名  作用

  ax.set_title()  設置圖表標題

  ax.set_xlabel(); ax.set_ylabel  設置x;y軸標題

  ax.set_xticks(); ax.set_yticks()  設置x;y軸刻度

  ax.set_xlim(); ax.set_ylim()  設置x;y軸范圍

  ax.annotate()  設置標注

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

  表一表二中的plt是固定的名字,不論畫什么都是plt.xxx(),而表三和表四中ax.xxx()中的ax要改成你實例的對象名。

  注意對比表二和表四,很多作用相同的東西,跑到了axes這里要多加一個set_

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

娄烦县| 渝北区| 漯河市| 涞源县| 新巴尔虎右旗| 平湖市| 富源县| 荆州市| 霍林郭勒市| 崇信县| 剑河县| 舟曲县| 金门县| 焦作市| 富顺县| 沿河| 科技| 阿图什市| 新巴尔虎左旗| 封开县| 吉木乃县| 西贡区| 吴旗县| 阿合奇县| 建水县| 独山县| 伊春市| 双柏县| 广丰县| 河西区| 宁明县| 太谷县| 南阳市| 松潘县| 林甸县| 旺苍县| 晋城| 东宁县| 阳西县| 伽师县| 盘锦市|