У меня возникли проблемы с matplotlib, настаивающим на отображении фигуры, даже когда я не вызвал show().Matplotlib не может подавить фигурное окно
Функция в вопросе:
def make_plot(df):
fig, axes = plt.subplots(3, 1, figsize=(10, 6), sharex=True)
plt.subplots_adjust(hspace=0.2)
axes[0].plot(df["Date_Time"], df["T1"], df["Date_Time"], df["T2"])
axes[0].set_ylabel("Temperature (C)")
axes[0].legend(["T1", "T2"], bbox_to_anchor=(1.12, 1.1))
axes[1].semilogy(df["Date_Time"], df["IGP"], df["Date_Time"], df["IPP"])
axes[1].legend(["IGP", "IPP"], bbox_to_anchor=(1.12, 1.1))
axes[1].set_ylabel("Pressure (mBar)")
axes[2].plot(df["Date_Time"], df["Voltage"], "k")
axes[2].set_ylabel("Voltage (V)")
current_axes = axes[2].twinx()
current_axes.plot(df["Date_Time"], df["Current"], "r")
current_axes.set_ylabel("Current (mA)")
axes[2].legend(["V"], bbox_to_anchor=(1.15, 1.1))
current_axes.legend(["I"], bbox_to_anchor=(1.14, 0.9))
plt.savefig("static/data.png")
где ДФ является dataframe создана при панд. Предполагается, что это будет на фоне веб-сервера, поэтому я хочу, чтобы эта функция удаляла файл в указанном каталоге. Однако, когда он выполняется, он делает это, а затем поднимает окно фигуры и застревает в цикле, не позволяя мне перезагрузить страницу. Мне что-то не хватает?
EDIT: Забыл добавить, я запускаю python 2.7 на Windows 7, 64 бит.
вы можете проверить, является ли вы работать в интерактивном режиме [] (http://matplotlib.org/faq/usage_faq.html#what-is -interactive-режим). – Evert
Кроме того, какой бэкэнд вы используете? Вы выбрали не-gui-бэкэнд? – Evert
Hi @Evert. Я попытался использовать plt.ioff(), чтобы отключить интерактивный режим, но это не помогло. Вернее, он позволял коду запускаться дважды, а не только один раз (генерируя два фигурных окна перед тем, как застревать). Не могли бы вы объяснить, как мне выбрать не-gui-бэкэнд? –