Linux 中 图片的产生与查看

使用场景

当在 Linux 的控制台想要显示一张图片,使用matplotlib.plt.plot() 和matplotlib.plt.show() 会报错。此时可以曲线救国,不直接在服务器上查看图片,而是直接保存图片,然后将保存的图片存在本地或者远程连接到软件(pycharm,vscode)查看。

详解

import matplotlib.plt 之前插入 import matplotlib as mpl 和 mpl.use('Agg')

image-20220705213450222

mpl.use('Agg') : 表示 不显示绘图

然后再对应的需要绘制图片的位置 添加保存图片的代码(原来的显示图片的代码不需要修改);记得最后添加 plt.close(),避免在保存多张图片时图片重叠。

image-20220705213703383

例外

我在一个文件中(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 后了(这是不允许的)

然后保存图片的时候报错了

image-20220707094137668

解决办法:在 b.py 中注释掉如下代码,并在后面添加 : plt.switch_backend('agg')

import a
# import matplotlib as mpl
# mpl.use('Agg')
import matplotlib.pyplot as plt
plt.switch_backend('agg')
posted @ 2022-07-05 21:42  jacknie23  阅读(625)  评论(0编辑  收藏  举报