matplotlib 教程簡析


介紹

官方教程
中文教程

功能簡介

基礎功能

使用簡介

  • 基礎概念
    legend,marker; figure,axes,axis ; spines
    Artist( text, line2D , collection , patch ... )
  • 數據類型
    array
  • 命名空間
    matplotlib.pyplot 可與 numpy 使用 (pylab已經棄用)
  • 生成多個圖
    plt.subplots(row,col) 可生成多個axes
  • 交互模式
    plt.draw() 如果不需要在屏幕顯示,調用該函數
  • 便捷功能
    線段的簡化:
    通過 path.simplify and path.simplify_threshold
    Marker的簡化:
    通過markevery plt.plot(x, y, markevery=10)詳情參看Markevery Demo
    線分塊:
    mpl.rcParams['agg.path.chunksize'] = 0
    使用快速格式:
    為了避免其他格式被改變,可以在最后部分調用,不會改變其他設置
    import matplotlib.style as mplstyle
    mplstyle.use('fast')

Pyplot示例

  • 折線圖、散點圖、柱狀圖
  • 散點圖的圖示、圖的顏色
  • 繪制多個圖
  • 插入文本
  • 插入數學公式
  • 插入注釋文本
  • 坐標軸會自動適應不同數據:線性、指數等

圖的種類

  • plot()
  • 多個子圖 subplot()
  • 顯示圖片 imshow()
  • 輪廓線與偽彩色 pcolormesh() , contour()
  • 直方圖 hist()
  • 路徑 matplotlib.path
  • 3D 3D plotting
  • 流量圖 streamplot()
  • 橢圓 為了某些具體任務..
  • 條形圖 bar()
  • 餅圖 pie()
  • 表格 table()
  • 散點圖 scatter()
  • 填充曲線 fill()
  • 時序數據 matplotlib.tickermatplotlib.dates
  • 指數 semilogx(), semilogy()loglog()
  • 極坐標圖 polar()
  • 圖示 legend()
  • tex文本 matplotlib.mathtextusetex

圖片示例

  • 導入圖片模塊 import matplotlib.image as mpimg ; 可以使用Pillow library, Matplotlib 只支持PNG
  • 讀取圖片 img = mpimg.imread('../../doc/_static/stinkbug.png')
  • 顯示圖片 imgplot = plt.imshow(img)
  • 色條 plt.colorbar()
  • 不同的圖片模式 (設置顯示范圍等)

一個完整的plot的例子

  • 數據
  • 加載數據
  • 控制格式 plt.style.use('fivethirtyeight') plt.rcParams.update({'figure.autolayout': True})
    tips: Customizing Matplotlib with style sheets and rcParams
  • 變更plt屬性,一次改變多個 pyplot.setp()
  • 調整圖的尺寸 fig, ax = plt.subplots(figsize=(8, 4))
  • 坐標軸格式控制 ax.xaxis.set_major_formatter(formatter) ticker.FuncFormatter
  • 保存圖片 figure.Figure.savefig()

使用style sheets與 rcParams控制格式

style sheets
  • 可選用的格式 plt.style.available
  • 定義自己的格式 mpl_configdir/stylelib/presentation.mplstyle
  • 格式組合 plt.style.use(['dark_background', 'presentation'])
  • 臨時格式 with plt.style.context('dark_background'):
rcParams
  • 直接使用 matplotlib.rcParams 修改格式,如 mpl.rcParams['lines.linewidth'] = 2
  • 使用matplotlib.rc()修改格式,如 mpl.rc('lines', linewidth=4, color='g')
  • 使用matplotlib.rcdefaults()恢復默認配置
  • 默認配置都在 matplotlibrc 文件中

中級功能

Artist 教程

三層結構:

  1. 畫圖區域 matplotlib.backend_bases.FigureCanvas
  2. 畫圖方法 matplotlib.backend_bases.Renderer
  3. 使用renderercanvas上繪圖 matplotlib.artist.Artist

Artist 分為兩類:

  1. primitives 包括:Line2D, Rectangle, Text, AxesImage, etc
  2. containers 包括:Axis, Axes and Figure

Axes 通常按行列分布,使用 add_axes() 在任意位置創建axes

legend 教程

legend entry: 每個legend由一個或多個legend entry構成
legend key: 左邊標記的顏色或模式
legend label: 描述handle的文本
legend handle: 描述的handle

cycler教程

處理周期數據 ps.

改變Figure布局

subplots() : 創建並布局axes
GridSpec : 重置figure布局
SubplotSpec : 給定布局,創建子圖
subplot2grid() : 在grid內部創建子圖

布局教程

  • constrained_layout = ture 會避免坐標、文字重疊現象
  • colorbars,Suptitle,Legends 布局的影響
  • 手動布局
  • 另一種選擇 tight_layout()

控制圖片方向

通過 originextent kwargs參數 控制圖片的axes

高級功能

路徑

繪制路徑 path

路徑效果

設置路徑藝術字效果

轉換坐標系

偏移?

顏色

指定顏色

設置顏色方法

  • RGB or RGBA 通過0-1的浮點數 (0.1, 0.2, 0.5) or (0.1, 0.2, 0.5, 0.3)
  • RGB or RGBA 字符串 #0f0f0f or #0f0f0f80
  • 一個0-1浮點數,表示灰度 0.5
  • 顏色縮寫 {'b', 'g', 'r', 'c', 'm', 'y', 'k', 'w'}
  • X11/CSS4 顏色名 black
  • xkcd 顏色 xkcd:sky blue
  • 大寫C與數字 C0 根據style進行變化,數字最大也不知道是多少...(seaborn 有六種顏色 axes.prop_cycle: cycler('color', ['4C72B0', '55A868', 'C44E52', '8172B2', 'CCB974', '64B5CD']))

定制Colorbars

  • 基本連續的colorbar
  • 離散間隔的colorbar
  • 設定長度的colorbar

定制colormap

獲取改變colormap的值;設置多個colormap

colormap 分布

通常是線性分布,在某些情況下需要調整

選擇colormap

選擇colormap的色彩模式

文本

Matplotlib Plots 中的文本

基本命令

  • text axes上任意位置添加文本
  • annotate axes上任意位置添加注釋,有一個可選的箭頭
  • xlabel axes的x軸標簽
  • ylabel axes的y軸標簽
  • title axes標題
  • figtext figure上任意位置添加文本
  • suptitle figure添加標題

x-軸與y-軸文本的格式

  • 分布位置
  • 字體格式 text的參數
  • 間隔 pad

標題

  • 分布位置
  • 間隔 pad

刻度與刻度標簽

  • 主刻度、副刻度
  • 刻度顯示的范圍
  • 刻度顯示的格式

文本的屬性與布局

  • alpha 透明度
  • color 顏色
  • position 位置
  • rotation 旋轉

坐標轉換?
非拉丁字符?

注釋

  • 文本的樣式
  • 箭頭的格式(可以是圓、方框、各種箭頭等)
    ps. 注釋數據的高亮是由marker實現的

數學表達式

  • plot支持latex的數學表達式
    ps. 使用mathtype進行編輯,導出就可以了

使用latex渲染文本

沒有必要..

實際使用

根據 官方文檔示例 + API文檔 根據需要進行修改與使用

使用figure.Figure.savefig()保存成PDF


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM