我有一个我希望通过cronjob运行的python脚本,它会根据一些数据创建几个图并将它们保存到我服务器上的目录中。我正在使用pandas.plot
。该脚本在我的本地机器上运行正常,并且还在服务器上使用python笔记本。但是,当使用$ python myscript.py
在终端中运行时,我得到:
raise RuntimeError('Invalid DISPLAY variable')
RuntimeError: Invalid DISPLAY variable
一个类似的matplotlib问题(因为它对MPL没有帮助):RuntimeError: Invalid DISPLAY variable。这里的解决方案似乎将控制台输出路由到其他地方。
plt.switch_backend('agg')
或
matplotlib.use('agg')
我假设错误与没有"显示"有关。为了显示的情节。在我的脚本中,我将绘图分配给变量,但我似乎无法阻止它打印到控制台。
for query_metadata, dataframe in query_results.items():
df = dataframe
df.reset_index(inplace = True)
fig = df.plot.area(xticks=df.index, rot = 90, figsize = (20,8))
fig.set_xticklabels(df['date1'])
fig.set_title(key)
fig_ext = fig.get_figure()
fig_ext.savefig("{0}/{1}.png".format(save_dir, key))
答案 0 :(得分:1)
您已经获得了解决方案,只需在导入pandas之前设置后端:
import matplotlib
matplotlib.use('agg')
import pandas as pd
...