Ho problemi con matplotlib che insiste a visualizzare una figura wnidow anche quando non ho chiamato show().Matplotlib non è in grado di sopprimere la finestra di figura
La funzione in questione è:
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")
dove DF è un dataframe creati utilizzando i panda. Questo dovrebbe essere sullo sfondo di un server web, quindi tutto quello che voglio è che questa funzione faccia cadere il file nella directory specificata. Tuttavia, quando viene eseguito, esegue questa operazione, quindi apre una finestra di figura e rimane bloccata in un ciclo, impedendomi di ricaricare la pagina. Mi manca qualcosa di ovvio?
EDIT: Ho dimenticato di aggiungere, sto eseguendo Python 2.7 su Windows 7, 64 bit.
si consiglia di verificare se si sta eseguendo in [modalità interattiva] (http://matplotlib.org/faq/usage_faq.html#what-is -interactive-mode). – Evert
Inoltre, quale back-end usi? Hai scelto un back-end non gui? – Evert
Ciao @Evert. Ho provato a usare plt.ioff() per forzare la modalità interattiva, ma questo non ha aiutato. O meglio, ha permesso al codice di funzionare due volte, invece di una sola volta (generando due finestre di figure prima di rimanere bloccate). Puoi spiegare come dovrei scegliere un back-end non-gui? –