天天看點

Matplotlib繪圖backend報錯—UserWarning: Matplotlib is currently using agg, which is a non-GUI backend

前言:matplotlib繪圖也有

前端(frontend)

後端(backend)

,這與網站開發中的前後端稍有不同,其前端指的是用python寫的代碼,比如我們調用plot函數,設定一些基本的title,legend參數等等。而實際的從0開始制圖以及圖檔顯示需要很繁雜的工作,這就需要有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上支援的前後端是

Matplotlib繪圖backend報錯—UserWarning: Matplotlib is currently using agg, which is a non-GUI backend

一、Interactive backends

使用互動式後端可以自動在螢幕上繪圖,當你想實時繪圖并直接在圖檔上進行其他操作時适合用這種後端。

重新整理plot的函數:

draw()

官方具體參數:

Matplotlib繪圖backend報錯—UserWarning: Matplotlib is currently using agg, which is a non-GUI backend

執行個體

Matplotlib繪圖backend報錯—UserWarning: Matplotlib is currently using agg, which is a non-GUI backend

二、Non-interactive backends

使用非互動式後端用于你要讀寫圖檔,或者要獨立顯示兩幅以上的圖檔的情景

顯示圖檔的函數:

show()

官方具體參數值:

Matplotlib繪圖backend報錯—UserWarning: Matplotlib is currently using agg, which is a non-GUI backend

三、報錯解決

問題描述:由于一開始在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

Matplotlib繪圖backend報錯—UserWarning: Matplotlib is currently using agg, which is a non-GUI backend