保存matplotlib.pyplot子图而不生成显示[Python]

时间:2015-03-17 07:01:29

标签: python-2.7 matplotlib plot

问题:

我遇到的问题是我在无头的virt机器上运行诊断脚本。在代码中,我生成一组与单个对象(包含目标数据)相关的图。当没有可用的显示导致错误时,调用ax.plot_date(x_vals, y_vals)会导致子图调用tcl进行显示(参见下面的错误)。

我想使用相同的代码,但不生成要显示的图,最后保存fig.savefig(filepath)。任何和所有的帮助将不胜感激!

我甚至愿意采用更有效的方法,所以请随意提供。

代码示例:

import matplotlib.pyplot as plt
from matplotlib.dates import drange
from datetime import timedelta

# Code...    

# Setup
delta = timedelta(minutes=1)
dates = drange(requested_start, requested_end, delta)

for obj in obj_set:
    # Create Plot
    fig, ax = plt.subplots()
    fig.suptitle('Title', fontsize=10)
    plt.xlabel('Time', fontsize=10)
    ax.set_xlim(dates[0], dates[-1])
    ax.fmt_xdata = DateFormatter('%Y-%m-%d %H:%M:%S')
    ax.plot_date(dates, obj.data_set) #Here is command that I would like assistance
    fig.autofmt_xdate()

    # Setup file information local storage
    file_name = '%s.png' % (self.name)
    file_path = os.path.join(outdir, 'plots', file_name)
    fig.savefig(file_path)
    plt.close(fig)

收到错误:

TclError: no display name and no $DISPLAY environment variable

0 个答案:

没有答案