不能使用 matplotlib.use('Agg'),图形总是显示在屏幕上

Can#39;t use matplotlib.use(#39;Agg#39;), graphs always show on the screen(不能使用 matplotlib.use(Agg),图形总是显示在屏幕上)
本文介绍了不能使用 matplotlib.use('Agg'),图形总是显示在屏幕上的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

我正在研究 matplotlib,不知道如何只保存图形而不将其打印在屏幕上.

I'm studying matplotlib and don't know how to just save the graph and not print it on the screen.

所以我在网上做了一些研究,很多答案都说解决方案是matplotlib.use('Agg').并且必须在导入 matplotlib.pyplot 或 pylab 之前.

So I've done some research on the Internet, many answers said the solution is matplotlib.use('Agg'). And it must be before importing matplotlib.pyplot or pylab.

然后当我将它添加到脚本的第一行时,它根本不起作用.

Then when I added it in the first line of my script, it doesn't work at all.

import matplotlib
matplotlib.use('Agg') 
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

E:Program FilesAnaconda3libsite-packagesmatplotlib\__init__.py:1401: 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.

  warnings.warn(_use_error_msg)

我使用 Anaconda Spyder,所以我重新启动内核并再次运行我的脚本,我得到了同样的错误信息.

I use Anaconda Spyder, so I restarted kernel and ran my script again, I got same wrong information.

然后我再次重启内核,直接在控制台输入如下代码:

Then I restarted kernel again and directly typed the following code in the console:

In[1]: import matplotlib as mpl

In[2]: mpl.use('Agg')

E:Program FilesAnaconda3libsite-packagesmatplotlib\__init__.py:1401: 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.

  warnings.warn(_use_error_msg)

另外,如果我在脚本末尾删除 'plt.show()' 或添加 'plt.ioff()',图表将始终打印在屏幕上.

Also, if I delete 'plt.show()' at the end of script or add 'plt.ioff()', the graph will always print on the screen.

感谢大家的回答.现在我有两个解决方案:

Thanks for everyone's answer. Now I have two solutions:

  1. 只需使用 plt.close() ,这不会改变后端并且不会显示图形.

  1. just use plt.close() , this will not change the backend and the figure doesn't show up.

使用plt.switch_backend('Agg'),这会将后端切换为'agg',屏幕上不会打印任何图形.

use plt.switch_backend('Agg'), this will switch the backend to 'agg' and no figure printed on the screen.

推荐答案

可以尝试切换后端.显然 Spyder 会先加载 matplotlib,而 use 没有任何效果.这可能会有所帮助:如何在matplotlib/Python中切换后端

You can try to switch the backend. Apparently Spyder loads matplotlib before you do, and use has no effect. This may be helpful: How to switch backends in matplotlib / Python

这篇关于不能使用 matplotlib.use('Agg'),图形总是显示在屏幕上的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

python arbitrarily incrementing an iterator inside a loop(python在循环内任意递增迭代器)
Joining a set of ordered-integer yielding Python iterators(加入一组产生 Python 迭代器的有序整数)
Iterating over dictionary items(), values(), keys() in Python 3(在 Python 3 中迭代字典 items()、values()、keys())
What is the Perl version of a Python iterator?(Python 迭代器的 Perl 版本是什么?)
How to create a generator/iterator with the Python C API?(如何使用 Python C API 创建生成器/迭代器?)
Python generator behaviour(Python 生成器行为)