it-swarm.com.de

Wie kann ich Matplotlib anweisen, ein zweites (neues) Diagramm zu erstellen und später das alte zu zeichnen?

Ich möchte Daten plotten, dann eine neue Figur erstellen und Daten plotten2 und schließlich zum ursprünglichen Plot und den ursprünglichen Plotdaten3 zurückkehren.

import numpy as np
import matplotlib as plt

x = arange(5)
y = np.exp(5)
plt.figure()
plt.plot(x, y)

z = np.sin(x)
plt.figure()
plt.plot(x, z)

w = np.cos(x)
plt.figure("""first figure""") # Here's the part I need
plt.plot(x, w)

FYI Wie sage ich matplotlib, dass ich mit einem Plot fertig bin? macht etwas Ähnliches, aber nicht ganz! Ich kann nicht auf diese ursprüngliche Handlung zugreifen.

113
Peter D

Wenn Sie solche Dinge regelmäßig tun, kann es sich lohnen, die objektorientierte Schnittstelle zu matplotlib zu untersuchen. In deinem Fall:

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(5)
y = np.exp(x)
fig1, ax1 = plt.subplots()
ax1.plot(x, y)
ax1.set_title("Axis 1 title")
ax1.set_xlabel("X-label for axis 1")

z = np.sin(x)
fig2, (ax2, ax3) = plt.subplots(nrows=2, ncols=1) # two axes on figure
ax2.plot(x, z)
ax3.plot(x, -z)

w = np.cos(x)
ax1.plot(x, w) # can continue plotting on the first axis

Es ist etwas ausführlicher, aber viel klarer und übersichtlicher, insbesondere bei mehreren Figuren mit jeweils mehreren Untergrundstücken.

135
simonb

Wenn Sie figure aufrufen, nummerieren Sie einfach den Plot.

x = arange(5)
y = np.exp(5)
plt.figure(0)
plt.plot(x, y)

z = np.sin(x)
plt.figure(1)
plt.plot(x, z)

w = np.cos(x)
plt.figure(0) # Here's the part I need
plt.plot(x, w)

Bearbeiten: Beachten Sie, dass Sie die Diagramme nummerieren können, wie Sie möchten (hier beginnend mit 0) aber wenn Sie beim Erstellen einer neuen Figur überhaupt keine Nummer angeben, beginnt die automatische Nummerierung bei 1 ("Matlab Style" laut Dokumentation).

92
agf

Die Nummerierung beginnt jedoch bei 1.

x = arange(5)
y = np.exp(5)
plt.figure(1)
plt.plot(x, y)

z = np.sin(x)
plt.figure(2)
plt.plot(x, z)

w = np.cos(x)
plt.figure(1) # Here's the part I need, but numbering starts at 1!
plt.plot(x, w)

Wenn Sie mehrere Achsen in einer Figur haben, z. B. Unterzeichnungen, verwenden Sie den Befehl axes(h), wobei h das Handle des gewünschten Achsenobjekts ist, um sich auf diese Achsen zu konzentrieren.

(Ich habe noch keine Kommentarberechtigungen, entschuldige die neue Antwort!)

13
Ross B.

Eine Möglichkeit, die ich nach einiger Anstrengung gefunden habe, besteht darin, eine Funktion zu erstellen, die die Matrix data_plot, den Dateinamen und die Reihenfolge als Parameter erhält, um Boxplots aus den angegebenen Daten in der bestellten Figur zu erstellen (unterschiedliche Reihenfolgen = unterschiedliche Figuren) und sie unter dem angegebenen Dateinamen zu speichern.

def plotFigure(data_plot,file_name,order):
    fig = plt.figure(order, figsize=(9, 6))
    ax = fig.add_subplot(111)
    bp = ax.boxplot(data_plot)
    fig.savefig(file_name, bbox_inches='tight')
    plt.close()
0
emir