使用场景
当在 Linux 的控制台想要显示一张图片,使用matplotlib.plt.plot() 和matplotlib.plt.show() 会报错。此时可以曲线救国,不直接在服务器上查看图片,而是直接保存图片,然后将保存的图片存在本地或者远程连接到软件(pycharm,vscode)查看。
详解
在 import matplotlib.plt 之前插入 import matplotlib as mpl 和 mpl.use(‘Agg’)
mpl.use(‘Agg’) : 表示 不显示绘图
然后再对应的需要绘制图片的位置 添加保存图片的代码(原来的显示图片的代码不需要修改);记得最后添加 plt.close(),避免在保存多张图片时图片重叠。
例外
我在一个文件中(a.py)写上如下的代码,并保存了相关图片:
import matplotlib as mpl
mpl.use('Agg')
import matplotlib.plt
然后在 另一个文件(b.py)中导入 a.py,并也想保存相关图片:
import a
import matplotlib as mpl
mpl.use('Agg')
import matplotlib.plt
此时系统提出了警告
train.py:45: UserWarning:
This call to matplotlib.use() has no effect because the backend has already
been chosen; matplotlib.use() must be called *before* pylab, matplotlib.pyplot,
or matplotlib.backends is imported for the first time.
我认为是因为在 a.py 中引入过 import matplotlib.plt ,再在 b.py 中时使用 mpl.use(‘Agg’)就已经位于import matplotlib.plt 后了(这是不允许的)
然后保存图片的时候报错了
解决办法:在 b.py 中注释掉如下代码,并在后面添加 : plt.switch_backend(‘agg’)
import a
import matplotlib as mpl
mpl.use('Agg')
import matplotlib.pyplot as plt
plt.switch_backend('agg')
Original: https://www.cnblogs.com/jack-nie-23/p/16448756.html
Author: jacknie23
Title: Linux 中 图片的产生与查看
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/582398/
转载文章受原作者版权保护。转载请注明原作者出处!