matplotlib


官網範例

圖的概念

matplotlib_第1张图片
圖的概念

匯入模組

匯入模組

圖表顯示操作

  • 使用腳本:
    若在腳本中運行matplotlib的話顯示繪圖需要使用plt.show(),若顯示繪圖後變更繪圖而繪圖沒有更新則使用plt.draw()
  • 使用Ipython notebook:
    使用Ipython notebook不需要使用plt.show()繪圖運行時會自動顯示,若顯示繪圖後變更繪圖而繪圖沒有更新則使用plt.draw(),可以使用%matplotlib notebook使用交互模式(3D圖可以旋轉等功能),使用%matplotlib inline則使用靜態模式(靜態圖形)。

Latex功能

Latex
matplotlib在字串中支持Latex功能,較複雜的LaTeX 需使用 LaTeX 渲染,需要安裝 LaTeX 和 Ghostscript,否則一直會報錯:FileNotFoundError: [WinError 2] 系統找不到指定的文件,若Latex式子不複雜有時可以不開啟LaTeX渲染。
proTeXt - 基於MiKTeX的Windows發行版
Ghostscript

  • 打開Latex功能
  • path設置
    matplotlib_第2张图片
  • 若安裝完成也設置好path報錯:
    嘗試刪除您的.matplotlib/tex.cache目錄。如果您不知道在哪裡找到.matplotlib,請參閱matplotlib配置和緩存目錄位置
  • 範例:
    matplotlib_第3张图片
    Latex顯示對數分布函數
    matplotlib_第4张图片
    範例

顯示中文

matplotlib無法正常顯示中文需要在使用到中文的圖表前修改matlinplot字型設定,輸出圖表後在修改回來,修改後不可與特殊符號混用(中文不支持一些特殊符號),腳本在plt.show()前修改,若是在Ipython notebook或同視窗執行,則一次只能套用一種設定。

plt.rcParams['font.sans-serif'] = ['SimHei']  # 用來正常顯示中文標籤(修改默認字型)
plt.rcParams['axes.unicode_minus'] = False   # 用來正常顯示負號(修改設定)
plt.rcParams['font.sans-serif'] = ['DejaVu Sans']  # 用來正常顯示中文標籤(回復默認字型)
plt.rcParams['axes.unicode_minus'] = True  # 用來正常顯示負號(回復默認設定)
#在參數加fontproperties='SimHei',不用回復默認字型
set_ylabel("$L(\mu,\Sigma)$對$\mu$",fontproperties='SimHei')
範例

matplotlib_第5张图片
範例

圖與子圖控制

當子圖有指定變數時(例如a=subplot(111)),pyplot.xxx方法大多可以呼叫a.set_xxx或a.xxx方法,細部設定建議使用此方法。
詳細參數請參考官方API文檔
matplotlib.pyplot.figure
matplotlib.pyplot.subplot
matplotlib.pyplot.axes
matplotlib.gridspec.GridSpec
matplotlib.pyplot.subplots_adjust(子圖間距)
範例:

matplotlib_第6张图片
參數(行、列、編號),排列方式為:(由左至右,由上至下)
matplotlib_第7张图片
axes([x座標,y座標,圖長,圖寬])
matplotlib_第8张图片
GridSpec(行數,列數,hspace=高度間距,wspace=寬度間距)
matplotlib_第9张图片
GridSpec結果

圖表讀寫

matplotlib.pyplot.savefig
matplotlib.pyplot.imsave
matplotlib.pyplot.imread
matplotlib.pyplot.imshow

matplotlib_第10张图片
例1

matplotlib_第11张图片
例2

matplotlib_第12张图片
結果1
matplotlib_第13张图片
結果2
matplotlib_第14张图片

刻度控制

主刻度(majorticks)、次刻度(minorticks),標籤(xlabel,ylabel),刻度值(xticks,yticks),刻度範圍(xlim,ylim)、刻度參數(tick_params)。

  • 開關次刻度
    matplotlib.pyplot.minorticks_on
    matplotlib.pyplot.minorticks_off

  • 標籤設置
    matplotlib.pyplot.xlabel
    matplotlib.pyplot.ylabel

  • 刻度值設置
    matplotlib.pyplot.xticks
    matplotlib.pyplot.yticks

  • 刻度範圍設置
    matplotlib.pyplot.xlim
    matplotlib.pyplot.ylim

  • 刻度參數設置
    matplotlib.pyplot.tick_params

  • 隱藏刻度
    隱藏刻度可以設置tick值為空(set_xticks([ ]),set_yticks([ ]))

    matplotlib_第15张图片
    範例
    matplotlib_第16张图片
    結果

  • 繪製刻度格線
    matplotlib.pyplot.grid

    matplotlib_第17张图片
    範例

  • 增加共用x或y的新軸
    matplotlib.axes.Axes.twinx
    matplotlib.axes.Axes.twiny

    matplotlib_第18张图片

    matplotlib_第19张图片

  • 調整軸位置及其他屬性
    spines_api

    matplotlib_第20张图片

    matplotlib_第21张图片

樣式設置

  • 註釋
    matplotlib.pyplot.annotate
matplotlib_第22张图片
範例
  • 顏色刻度
    colorbar
    matplotlib.cm
    matplotlib.pyplot.colorbar
    cmap顏色參考

    matplotlib_第23张图片
    範例

  • 放置圖例
    matplotlib.pyplot.legend
    圖例需搭配繪圖方法的label參數使用。

    matplotlib_第24张图片
    範例
    matplotlib_第25张图片
    結果

  • 圖框與子圖樣式設定
    matplotlib.pyplot.figure
    matplotlib.pyplot.subplot

    matplotlib_第26张图片
    範例
    matplotlib_第27张图片
    結果

  • 樣式表
    matplotlib.style
    樣式表

    matplotlib_第28张图片
    plt.style.available列出可用樣式
    matplotlib_第29张图片
    範例
    matplotlib_第30张图片
    結果

2D圖

  • 文本
    matplotlib.pyplot.text

    matplotlib_第31张图片
    範例
    matplotlib_第32张图片
    範例

  • 線型圖
    matplotlib.pyplot.plot

    matplotlib_第33张图片
    範例

  • 散點圖
    matplotlib.pyplot.scatter

    matplotlib_第34张图片
    例1
    matplotlib_第35张图片
    例1結果

  • 柱狀圖
    matplotlib.pyplot.bar

    matplotlib_第36张图片
    範例

  • 餅狀圖
    matplotlib.pyplot.pie

    matplotlib_第37张图片
    範例

  • 誤差圖
    matplotlib.pyplot.errorbar

    matplotlib_第38张图片
    範例

  • 直方圖
    matplotlib.pyplot.hist

    matplotlib_第39张图片
    範例

  • 二維直方圖
    matplotlib.pyplot.hist2d

    matplotlib_第40张图片
    範例

  • 二維六角直方圖
    matplotlib.pyplot.hexbin

    matplotlib_第41张图片
    範例

  • 量場圖
    matplotlib.pyplot.quiver
    matplotlib.pyplot.quiverkey

    matplotlib_第42张图片
    範例

  • 向量圖
    matplotlib.pyplot.arrow

    matplotlib_第43张图片
    範例
    matplotlib_第44张图片
    範例

  • 熱度圖(熱圖建議使用sns)
    matplotlib.pyplot.matshow

    matplotlib_第45张图片
    範例

  • 等高線圖
    matplotlib.pyplot.contour
    matplotlib.pyplot.contourf
    matplotlib.pyplot.clabel

    matplotlib_第46张图片
    範例

  • 圖片
    matplotlib.pyplot.imshow
    matplotlib.pyplot.imread

    matplotlib_第47张图片
    範例

    matplotlib_第48张图片
    範例

    matplotlib_第49张图片

3D圖

3D圖繪圖方法
3D圖所有相關方法

  • 文字
    Axes3D.text

  • 表面圖
    Axes3D.plot_surface(X, Y, Z, *args, norm=None, vmin=None, vmax=None, lightsource=None, **kwargs)

    matplotlib_第50张图片
    z=x+y
    matplotlib_第51张图片
    範例

  • 線形圖
    Axes3D.plot(xs,ys,* args,zdir ='z',** kwargs )

    matplotlib_第52张图片
    範例

  • 散點圖
    Axes3D.scatter(xs,ys,zs = 0,zdir ='z',s = 20,c = None,depthshade = True,* args,** kwargs )

    matplotlib_第53张图片
    範例
    matplotlib_第54张图片
    範例

  • 線框圖
    Axes3D.plot_wireframe(X,Y,Z,* args,** kwargs )

    matplotlib_第55张图片
    範例

  • 等高線圖
    Axes3D.contour(X, Y, Z, *args, zdir='z', offset=None, **kwargs)

    matplotlib_第56张图片
    範例

  • 填充等高線圖
    Axes3D.contourf(X, Y, Z, *args, zdir='z', offset=None, **kwargs)

    matplotlib_第57张图片
    範例

  • 向量圖
    Axes3D.quiver(* args,length = 1,arrow_length_ratio = 0.3,pivot ='tail',normalize = False,** kwargs )

    matplotlib_第58张图片
    範例

其他比較少用的方法請參考官方範例

動畫

動畫

  • 匯入模組
  • 繪製及儲存
    gif儲存需安裝imagemagick
    matplotlib.animation.FuncAnimation
    matplotlib_第59张图片
    matplotlib_第60张图片
    matplotlib_第61张图片
    matplotlib_第62张图片
    matplotlib_第63张图片
    matplotlib_第64张图片

進階應用

matplotlib還有許多工具包與相關模塊套件可以使用,下面列舉其中一些,更深入可以到官網查詢以及參考一些前輩的文章。

  • 地圖相關
    教程

    matplotlib_第65张图片
    教程中的圖片

  • seaborn模塊
    官網
    簡易教程

    matplotlib_第66张图片

  • mayavi模塊
    繪製複雜的3D圖時建議使用mayavi,matplotlib3D在重疊的3D結構顯示上並不佳。
    mayavi文檔
    mayavi簡易教程

你可能感兴趣的:(matplotlib)