Python 不显示打印:matplotlib.use()的正确使用
我需要在没有显示器的系统上绘图。 如果我使用matplotlib.pyplot.plt天真地绘图,我会得到Python 不显示打印:matplotlib.use()的正确使用,python,matplotlib,Python,Matplotlib,我需要在没有显示器的系统上绘图。 如果我使用matplotlib.pyplot.plt天真地绘图,我会得到 raise RuntimeError('Invalid DISPLAY variable') 我发现matplotlib.use()可以在这个上下文中使用。 现在我有一个主文件: **main.py:** import my_module .... # do stuff **my_module.py:** import matplotlib matplotli
raise RuntimeError('Invalid DISPLAY variable')
我发现matplotlib.use()
可以在这个上下文中使用。
现在我有一个主文件:
**main.py:**
import my_module
....
# do stuff
**my_module.py:**
import matplotlib
matplotlib.use('Agg') # Must be before importing matplotlib.pyplot or pylab!
import matplotlib.pyplot as plt
# do stuff
plt.plot(data)
运行main.py时,我得到:
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.
但对我来说,似乎是在导入pyplot
之前调用它。后来我得到了这个运行时错误
File "[OMIT]/python2.7/site-packages/matplotlib /backends/backend_qt5.py", line 144, in _create_qApp
raise RuntimeError('Invalid DISPLAY variable')
RuntimeError: Invalid DISPLAY variable
那么,更改matplotlib后端的正确方法是什么呢?我不需要显示器,但我需要能够使用plt存储图形。savefig您需要
import matplotlib
matplotlib.use('Agg')
在新内核上,尤其是在导入matplotlib.pyplot
我很好奇,也很高兴知道是否有办法清除/刷新ipython内核,而不必重新启动它;到目前为止,我的任务还没有成功。最后,我解决了以下问题:
**main.py***
import matplotlib
matplotlib.use('Agg') # Must be before importing matplotlib.pyplot or pylab!
import my_module
由于my_模块中的许多子导入使得无法识别pyplot第一次导入的位置。
我还做了:
import my_module
相反,我做得更早
from my_module import my_func
main.py
中是否还有其他可以导入matplotlib
的内容?除了我的\u模块
,您还导入其他模块吗?我刚更改了代码,让我的\u模块先导入。谢谢你的建议。如果不刷新内核,问题仍然存在刷新控制台后问题仍然存在。现在,第一次导入matplotlib是在main.py导入的第一个模块中完成的,应该可以了吧?应该可以了。也许你需要为你的问题创建一个新的答案,以便在这里得到正确的答案。将很快完成我正在尝试%reset(Anaconda,iPython)请让我知道。]%重置无效,正在尝试重新启动内核