matplotlib 使用簡明教程(五)-畫布、圖表、元素基礎操作

通過 plt 庫進行畫布(figure)相關操作

創建一個新的畫布或引用一個已有的畫布

plt.figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None, clear=False) 重要參數包括:

  • num:Figure 的編號,可選。如果這個 num 的 figure 已經存在,那麼激活這個 figure 並引用,否則生成一個新的 figure
  • figsize:設置畫布的尺寸,默認 [6.4, 4.8],單位英寸
  • dpi:分辨率,默認 100
  • facecolor:背景顏色
  • edgecolor:邊線顏色
  • clear:如果 num 代表的 figure 已經存在,是否要將這個畫布清空

更新當前的畫布(figure)

plt.draw()

對於支持交互類型(interactive model)的 backend,如果已經開啓了交互類型(ion()),則不需要每次調用。

繪製畫布(figure)

plt.show()

繪製畫布,對於支持交互類型的 backend,沒有作用;對於非交互類型(non-interactive model)的 backend,則立即顯示畫布,直至畫布被關閉。

將畫布保存成文件

plt.savefig(fname, dpi=None, facecolor='w', edgecolor='w', orientation='portrait', papertype=None, format=None, transparent=False, metadata=None)

重要參數包括:

  • fname:一個文件路徑或者一個 file 類型的對象
  • dpi:分辨率,一個整數或者 ‘figure’ 指定使用 figure 的分辨率
  • facecolor:背景顏色
  • edgecolor:邊線顏色
  • orientation:方向,‘landscape’ 或 ‘portrait’
  • papertype:紙張類型,‘letter’, ‘legal’, ‘executive’, ‘ledger’, ‘a0’ 到 ‘a10’, ‘b0’ 到 ‘b10’
  • format:格式,可能是 ‘png’,‘pdf’,‘ps’,‘eps’,‘svg’ 等,具體取決於當前 backend 所支持的格式
  • transparent:是否透明
  • metadata:一些參數,kv 格式的參數
    • ‘png’ 類型支持的參數見 這裏
    • ‘pdf’ 類型支持的參數見 這裏
    • ‘eps’ 或 ‘ps’ 支持 ‘Creator’ 參數

清除當前的畫布(figure)

plt.clf()

關閉某個畫布

plt.close()

參數可以是:

  • 空,即關閉當前畫布
  • Figure 實例
  • 整數,Figure 編號
  • 字符串,Figure 名稱
  • ‘all’,所有畫布

獲取畫布信息:

作用 函數
獲取當前的畫布(figure) plt.gcf()
返回當前所有畫布的標籤列表 plt.get_figlabels()
返回當前所有畫布的編號 plt.get_fignums()

爲畫布(Figure)添加標題

plt.suptitle(t, **kwargs)

重要參數說明:

  • t:標題內容
  • x,y:座標位置,默認 x = 0.5,y = 0.98
  • ha:水平對齊方式,‘center’, ‘left’, ‘right’
  • va:豎直對齊方式,‘top’, ‘center’, ‘bottom’, ‘baseline’

使用建議

matplotlib.figure.Figure 就是 matplotlib 的畫布類,通過這個類的對象其實可以完成 plt 中封裝的畫布相關的所有功能。
感興趣的朋友可以通過 https://matplotlib.org/api/_as_gen/matplotlib.figure.Figure.html#matplotlib.figure.Figure 來了解詳情。但是爲了突出“實用”,減少學習成本,建議還是主要通過 plt 來操作畫布,唯一需要解決的問題就是如何切換當前畫布,如下舉例說明:

>>> f1 = plt.figure() # 創建畫布 1
>>> f2 = plt.figure() # 創建畫布 2
>>> f3 = plt.figure() # 創建畫布 3
>>> f3 == plt.gcf() # 當前畫布是 f3
True
>>> plt.get_fignums() # 獲取畫布編號列表
[1, 2, 3]
>>> f = plt.figure(num = 1) # 通過 figure(num = 編號) 引用編號爲 1 的畫布
>>> f1 == f # f1 和 f 指向了同一 Figure 對象
True
>>> f1 == plt.gcf() # 當前畫布已經切換成了 f1
True

通過 plt 庫進行多圖表操作

plt.subplot()

將畫布(Figure)分割成若干塊,並選擇其中的一塊作爲繪製的區域。有兩種基本調用方式:

  • subplot(行, 列, 序號) 其中的行、列即行數和列數,序號從左上角開始向右再向下,起始於 1
  • subplot(位置信息) 一個三位數,三位的含義分別爲行、列、序號

其他參數:

  • sharex, sharey:Axes 對象,是否要和這個 Axes 共享 x 或 y 軸
  • label:爲返回的 label 添加標籤

plt.subplot2grid(shape, loc, rowspan=1, colspan=1, fig=None, **kwargs)

將畫布(Figure)分割成特定的 MxN 的若干小格,並指定其中某些格子作爲繪製的區域。重要參數說明:

  • shape:一個元組,畫布分割的方式,第一個是行數,第二個列數
  • loc:一個元組,指定繪製區域的左上角微智,第一個是行數,第二個是列數
  • rowspan:向右擴展的格子數量
  • colspan:向下擴展的格子數量

plt.subplots(nrows=1, ncols=1, sharex=False, sharey=False, squeeze=True, subplot_kw=None, gridspec_kw=None, **fig_kw)

創建一個畫布(Figure)和一系列的子圖表,重要參數說明:

  • nrows, ncols:子圖表的的行數和列數
  • sharex, sharey:是否共享 x 或 y 軸,可選參數包括:
    • True 或 ‘all’:所有的子圖表共享座標
    • False 或 ‘none’:所有的子圖表獨立
    • ‘row’:每行的子圖表共享座標
    • ‘col’:每列的子圖表共享座標
  • squeeze:是否根據畫布的分割情況調整返回數據的格式,默認(False)返回一個二維數組,如果勾選該選項爲(True),則 1x1 的會返回一個單獨的變量,Nx1 和 1xM 會返回一個一維數組
  • num:設置返回畫布(figure)的編號

返回值包括:

  • fig:返回的畫布(Figure)
  • ax:返回的子圖表變量或列表

plt.subplots_adjust(left=None, bottom=None, right=None, top=None, wspace=None, hspace=None)

調整子圖表的一些佈局:

  • left,right,bottom,top:子圖表到畫布邊緣的間隙
  • wspace,hspzce:子圖表之間的間隙的寬度、高度

plt.twinx(ax=None)plt.twiny(ax=None)

創建一個共用 x 或 y 軸的圖表,新的圖表會疊加在 ax 上(如果 ax 爲 None 即疊加到當前的圖表上),新圖表的 y 或 x 軸 會放在右側或頂部

圖表(Axes)基本操作

向當前畫布添加圖表,並作爲當前的圖表

plt.axes(arg=None, **kwargs)

調用方式:

plt.axes()
plt.axes(rect, projection=None, **kwargs)
plt.axes(ax)

重要參數說明:

  • arg:定義了具體行爲,可選值爲:
    • None:等價於 plt.subplot(111, **kwargs)
    • 數組:格式爲 [左, 下, 寬, 高],說明圖表的位置和大小,使用歸一化的實數
    • Axes 對象:設置當前圖表爲該圖表
  • sharex,sharey:是否共用 x 或 y 軸
  • label:設置圖表的標籤
  • projection:指定投影類型,可選,可以是’aitoff’, ‘hammer’, ‘lambert’, ‘mollweide’, ‘polar’, ‘rectilinear’ 或者自定義字符串

獲取當前畫布中的圖表列表

plt.gca(**kwargs) 獲取當前畫布中的圖表列表,如果設置了 kwargs,則根據這些參數進行過濾。如果過濾結果爲空,那麼就創建一個符合條件的圖表並返回

重設當前圖表

plt.sca(ax) 設置當前圖表爲 ax,並把 ax 所屬的畫布設爲當前畫布

刪除圖表

plt.delaxes(ax = None) 如果參數爲空,刪除當前圖表,否則刪除 ax 定義的圖表

系列文章:

matplotlib 使用簡明教程(一)-基礎概念:
https://blog.csdn.net/fenghuizhidao/article/details/79352882
matplotlib 使用簡明教程(二)-常用圖表
https://blog.csdn.net/fenghuizhidao/article/details/83090043
matplotlib 使用簡明教程(三)-一些專業圖表簡介
https://blog.csdn.net/fenghuizhidao/article/details/83090165
matplotlib 使用簡明教程(四)-輔助性元件
https://blog.csdn.net/fenghuizhidao/article/details/83090249
matplotlib 使用簡明教程(五)-畫布、圖表、元素基礎操作
https://blog.csdn.net/fenghuizhidao/article/details/83090320
matplotlib 使用簡明教程(六)-圖像、動畫相關
https://blog.csdn.net/fenghuizhidao/article/details/83090512
matplotlib 使用簡明教程(七)-樣式定義
https://blog.csdn.net/fenghuizhidao/article/details/83090553

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章