美文网首页
matplotlib

matplotlib

作者: RJ阿杰 | 来源:发表于2018-09-19 15:39 被阅读0次

官網範例

圖的概念

圖的概念

匯入模組

匯入模組

圖表顯示操作

  • 使用腳本:
    若在腳本中運行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設置
  • 若安裝完成也設置好path報錯:
    嘗試刪除您的.matplotlib/tex.cache目錄。如果您不知道在哪裡找到.matplotlib,請參閱matplotlib配置和緩存目錄位置
  • 範例:
    Latex顯示對數分布函數 範例

顯示中文

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')
範例 範例

圖與子圖控制

當子圖有指定變數時(例如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(子圖間距)
範例:

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

圖表讀寫

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

例1 例2 結果1 結果2

刻度控制

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

樣式設置

範例

2D圖

3D圖

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

  • 文字
    Axes3D.text

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

    z=x+y 範例
  • 線形圖
    Axes3D.plot(xs,ys,* args,zdir ='z',** kwargs )

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

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

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

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

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

    範例

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

動畫

動畫

進階應用

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

相关文章

网友评论

      本文标题:matplotlib

      本文链接:https://www.haomeiwen.com/subject/gkuinftx.html