gpt4 book ai didi

python - 在没有窗口的情况下绘制和写入图像文件

转载 作者:IT王子 更新时间:2023-10-29 01:10:16 26 4
gpt4 key购买 nike

我发现使用 matplotlib 只是将图表绘制到文件中并不像阅读教程时看起来那么容易。在教程中解释说,您只需积累数据,然后:

import matplotlib.pyplot as plt
# ... fill variables with meaningful stuff
plt.plot(data.x,data.y,format_string)
plt.savefig(filename)

完成了。如果您只是将它作为 shell 执行,那也可以正常工作。但是如果你将这段代码提供给一个没有任何窗口的进程(比如 jenkins),那么你只会得到以下错误:

Traceback (most recent call last):
File "./to_graph.py", line 89, in <module>
main()
File "./to_graph.py", line 78, in main
plt.plot(warnings[0],warnings[1],args.format_warnings,label="Warnings")
File "/usr/lib/pymodules/python2.7/matplotlib/pyplot.py", line 2460, in plot
ax = gca()
File "/usr/lib/pymodules/python2.7/matplotlib/pyplot.py", line 701, in gca
ax = gcf().gca(**kwargs)
File "/usr/lib/pymodules/python2.7/matplotlib/pyplot.py", line 369, in gcf
return figure()
File "/usr/lib/pymodules/python2.7/matplotlib/pyplot.py", line 343, in figure
**kwargs)
File "/usr/lib/pymodules/python2.7/matplotlib/backends/backend_tkagg.py", line 80, in new_figure_manager
window = Tk.Tk()
File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1688, in __init__
self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use)
_tkinter.TclError: no display name and no $DISPLAY environment variable

这个错误的原因,据我了解堆栈跟踪行周围的源代码,是 backend_tkagg.py 期望使用现有窗口(请参阅堆栈跟踪中的 Tk.Tk() 行)。所以我想知道是否有一种方法可以在不依赖窗口(-manager)的情况下使用 matplotlib(或根本不是 python)绘制图表。

最佳答案

您需要设置一个将直接写入文件的后端。

详情请见: http://matplotlib.sourceforge.net/faq/usage_faq.html#what-is-a-backend

导入pyplot前需要调用matplotlib.use。

例如:

import matplotlib
matplotlib.use("AGG")
import pyplot
# continue as usual

其实我也是刚刚发现文档中给出的解决方案也是这样的:

http://matplotlib.sourceforge.net/faq/howto_faq.html#generate-images-without-having-a-window-appear

关于python - 在没有窗口的情况下绘制和写入图像文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11410445/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com