在服务器上画图的时候没有 matplotlib的绘图的环境提示“没有显示的环境变量”
no display name and no $DISPLAY environment variable
之后去matplotlib找解决方案,终于知道原因了。matplotlib用pyplot画图的时候用的是一种交互的模式,matplotlib库里本身就包含一些后端,这些后端能够适应不同的编辑器,尽管有点时候画完了不进行show()后者draw()会不显示,但依旧是在交互的默认后端里进行操作的。
然鹅,用服务器想画图的时候,发现居然不支持matplotlib画图,最终在帮助文档中找到的解决方案。用户开可以通过指定“非交互式后端”来实现。
import matplotlib
matplotlib.use('Agg') #指定后端渲染器
除了‘Agg’以外,matplotlibh还支持其他的后端渲染器的指令
渲染器 | 支持类型 | 描述 |
AGG | png | 栅格图像——agg库 |
PS | ps,eps | 向量图——ps格式 |
向量图——pdf | ||
SVG | svg | 向量图——svg |
Cairo | png, ps, pdf, svg | 栅格图像、矢量图——Cairo库 |
在用的时候发现,各种渲染器支持的类型很宽泛, 常用的格式(jpg,png,tiff...)各种渲染器保存的类型都支持。
此外,matplotlib还支持其他QT5,QT4,GTK,macosx操作,具体可以看帮助文档https://matplotlib.org/Matplotlib.pdf,网页版https://www.matplotlib.org.cn/tutorials/introductory/usage.html#what-is-a-backend