绘制不显示:正确使用matplotlib.use()
问题描述:
我需要绘制在没有显示的系统上。 如果我天真地绘制使用matplotlib.pyplot.plt我得到绘制不显示:正确使用matplotlib.use()
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')
上一个新的内核,特别是如果你使用的是ipython
,进口matplotlib.pyplot
前我很好奇,也很高兴知道是否有办法清除/刷新ipython内核,而不必重新启动它;到目前为止,我的追求还没有成功。
**main.py***
import matplotlib
matplotlib.use('Agg') # Must be before importing matplotlib.pyplot or pylab!
import my_module
在my_module
许多subimports做出无法查明pyplot首次进口:
答
最后,我已经解决了。 此外,我已经做了:
import my_module
,而不是我在做ealier。
from my_module import my_func
“main.py”中是否还有其他可以导入'matplotlib'的东西?你是否导入除my_module之外的其他模块? – tom
我刚刚更改了我的代码,先导入了my_module。感谢您的建议。问题仍然存在,无需刷新内核 – ErroriSalvo
刷新控制台后问题仍然存在。现在第一个导入matplotlib在main.py导入的第一个模块中完成,应该没问题吧? – ErroriSalvo