前言:matplotlib繪圖也有和
前端(frontend)
,這與網站開發中的前後端稍有不同,其前端指的是用python寫的代碼,比如我們調用plot函數,設定一些基本的title,legend參數等等。而實際的從0開始制圖以及圖檔顯示需要很繁雜的工作,這就需要有backend來幹這些活。
後端(backend)
matplotlib中的backend又分為兩種:
- User interface backends→Interactive backends,即互動式繪圖後端,側重渲染
- Hardcopy backends→Non-interactive backends,即非互動式繪圖後端,側重讀寫
設定backend
最簡便的方法是使用
use()
函數,注意需要在
pyplot
之前調用這個方法
import matplotlib as mpl
mpl.use('nbAgg')
import matplotlib.pyplot as plt
複制
檢視目前主機上支援的兩種後端:
import matplotlib as mpl
複制
- 檢視支援的互動式後端
mpl.rcsetup.interactive_bk
複制
- 檢視支援的非互動式後端
mpl.rcsetup.non_interactive_bk
複制
例如我的GPU上支援的前後端是
一、Interactive backends
使用互動式後端可以自動在螢幕上繪圖,當你想實時繪圖并直接在圖檔上進行其他操作時适合用這種後端。
重新整理plot的函數:
draw()
官方具體參數:
執行個體
二、Non-interactive backends
使用非互動式後端用于你要讀寫圖檔,或者要獨立顯示兩幅以上的圖檔的情景
顯示圖檔的函數:
show()
官方具體參數值:
三、報錯解決
問題描述:由于一開始在Jupyter上使用的是
mpl.use('Agg')
複制
是以報錯如下
UserWarning: Matplotlib is currently using agg, which is a non-GUI backend,
so cannot show the figure
複制
解決方法,查找自己裝置支援的互動式後端,如我的是
nbAgg
,然後修改為
mpl.use('nbAgg')
複制
即可
補充
對于繪圖風格,官網上提供了很多種,預設參數為
default
import matplotlib as mpl
mpl.style.use('default')
複制
網址如下:https://matplotlib.org/3.2.1/gallery/style_sheets/style_sheets_reference.html