圖的概念
圖的概念匯入模組
匯入模組圖表顯示操作
- 使用腳本:
若在腳本中運行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(子圖間距)
範例:
圖表讀寫
matplotlib.pyplot.savefig
matplotlib.pyplot.imsave
matplotlib.pyplot.imread
matplotlib.pyplot.imshow
刻度控制
主刻度(majorticks)、次刻度(minorticks),標籤(xlabel,ylabel),刻度值(xticks,yticks),刻度範圍(xlim,ylim)、刻度參數(tick_params)。
-
開關次刻度
matplotlib.pyplot.minorticks_on
matplotlib.pyplot.minorticks_off -
隱藏刻度
範例 結果
隱藏刻度可以設置tick值為空(set_xticks([ ]),set_yticks([ ]))
-
繪製刻度格線
範例
matplotlib.pyplot.grid
-
增加共用x或y的新軸
matplotlib.axes.Axes.twinx
matplotlib.axes.Axes.twiny
-
調整軸位置及其他屬性
spines_api
樣式設置
範例-
顏色刻度
範例
colorbar
matplotlib.cm
matplotlib.pyplot.colorbar
cmap顏色參考
-
放置圖例
範例 結果
matplotlib.pyplot.legend
圖例需搭配繪圖方法的label參數使用。
-
圖框與子圖樣式設定
範例 結果
matplotlib.pyplot.figure
matplotlib.pyplot.subplot
-
樣式表
plt.style.available列出可用樣式 範例 結果
matplotlib.style
樣式表
2D圖
- 範例 範例
- 範例
- 例1 例1結果
- 範例
- 範例
- 範例
- 範例
-
二維直方圖
範例
matplotlib.pyplot.hist2d
-
二維六角直方圖
範例
matplotlib.pyplot.hexbin
- 範例
- 範例 範例
-
熱度圖(熱圖建議使用sns)
範例
matplotlib.pyplot.matshow
-
等高線圖
範例
matplotlib.pyplot.contour
matplotlib.pyplot.contourf
matplotlib.pyplot.clabel
-
圖片
範例
matplotlib.pyplot.imshow
matplotlib.pyplot.imread
範例
3D圖
-
文字
Axes3D.text -
表面圖
z=x+y 範例
Axes3D.plot_surface(X, Y, Z, *args, norm=None, vmin=None, vmax=None, lightsource=None, **kwargs)
-
線形圖
範例
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 )
其他比較少用的方法請參考官方範例
動畫
- 匯入模組
- 繪製及儲存
gif儲存需安裝imagemagick
matplotlib.animation.FuncAnimation
進階應用
matplotlib還有許多工具包與相關模塊套件可以使用,下面列舉其中一些,更深入可以到官網查詢以及參考一些前輩的文章。
- mayavi模塊
繪製複雜的3D圖時建議使用mayavi,matplotlib3D在重疊的3D結構顯示上並不佳。
mayavi文檔
mayavi簡易教程
网友评论