前言: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
查看当前主机上支持的两种后端:
代码语言:javascript复制import matplotlib as mpl
- 查看支持的交互式后端
mpl.rcsetup.interactive_bk
- 查看支持的非交互式后端
mpl.rcsetup.non_interactive_bk
例如我的GPU上支持的前后端是
一、Interactive backends
使用交互式后端可以自动在屏幕上绘图,当你想实时绘图并直接在图片上进行其他操作时适合用这种后端。
刷新plot的函数:draw()
官方具体参数:
实例
二、Non-interactive backends
使用非交互式后端用于你要读写图片,或者要独立显示两幅以上的图片的情景
显示图片的函数:show()
官方具体参数值:
三、报错解决
问题描述:由于一开始在Jupyter上使用的是
代码语言:javascript复制mpl.use('Agg')
所以报错如下
代码语言:javascript复制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