Pandas Plot:抑制Plot输出以允许在Bash中运行Script

时间:2018-02-27 17:09:21

标签: python python-3.x pandas cron

我有一个我希望通过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))

1 个答案:

答案 0 :(得分:1)

您已经获得了解决方案,只需在导入pandas之前设置后端:

import matplotlib
matplotlib.use('agg')
import pandas as pd
...