Matplotlib kann es nicht unterdrücken, Abbildung Fenster

Ich habe Probleme mit matplotlib beharren auf der Darstellung einer Figur wnidow, auch wenn ich noch nicht genannt, show().

Die Funktion in Frage:

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")

wo df ist ein dataframe erstellt mit pandas. Dies soll in den hintergrund einer web-server, also alles, was ich will, ist für diese Funktion, um drop die Datei in das angegebene Verzeichnis. Jedoch, wenn Sie ausführt, tut es das auch, und dann zieht sich eine Figur, die Fenster und stecken bleibt in einer Schleife, hindert mich daran, die Seite neu zu laden. Übersehe ich etwas offensichtliches?

EDIT: Vergaß hinzuzufügen, ich bin mit python 2.7 unter Windows 7, 64 bit.

  • Möglicherweise möchten Sie überprüfen, ob Sie laufen im interactive mode.
  • Auch, was das backend verwendest du? Haben Sie nahm ein non-gui-backend?
  • Hi @Evert. Ich habe versucht, mit plt.ioff() erzwingen, dass der interaktive Modus deaktiviert, aber das hat nicht geholfen. Oder eher, es erlaubt den code zweimal ausgeführt, anstatt nur einmal (Erzeugung von zwei Abbildung windows vor dem steckenbleiben). Können Sie uns erklären, wie ich entscheiden sollte, eine non-gui-backend?
  • Danke. Ich entschied mich für "AGG" als backend-und jetzt die Funktion verhält sich genau wie erwartet. Wenn Sie senden Sie Ihre Antwort formal, ich kann es akzeptieren, und schließen Sie die Frage.
Schreibe einen Kommentar