it-swarm.com.de

Wie erstelle ich mit Python zwei Diagramme nebeneinander?

Ich habe folgendes Beispiel auf matplotlib gefunden:

import numpy as np
import matplotlib.pyplot as plt


x1 = np.linspace(0.0, 5.0)
x2 = np.linspace(0.0, 2.0)

y1 = np.cos(2 * np.pi * x1) * np.exp(-x1)
y2 = np.cos(2 * np.pi * x2)

plt.subplot(2, 1, 1)
plt.plot(x1, y1, 'ko-')
plt.title('A tale of 2 subplots')
plt.ylabel('Damped oscillation')


plt.subplot(2, 1, 2)
plt.plot(x2, y2, 'r.-')
plt.xlabel('time (s)')
plt.ylabel('Undamped')

plt.show()

Meine Frage ist: Was muss ich ändern, um die Handlungen nebeneinander zu haben?

60
Heißenberg93

Ändern Sie Ihre Subplot-Einstellungen in:

plt.subplot(1, 2, 1)

...

plt.subplot(1, 2, 2)

Die Parameter für subplot sind: Anzahl der Zeilen, Anzahl der Spalten und welche Unterzeichnung Sie gerade verwenden. Damit 1, 2, 1 bedeutet "eine 1-zeilige, 2-spaltige Figur: gehe zum ersten Untergrund." Dann 1, 2, 2 bedeutet "eine 1-zeilige, 2-spaltige Figur: gehe zum zweiten Untergrund."

Sie fordern derzeit ein Layout mit zwei Zeilen und einer Spalte (dh übereinander) an. Sie müssen stattdessen nach einem Layout mit 1 Zeile und 2 Spalten fragen. Wenn Sie dies tun, wird das Ergebnis sein:

side by side plot

Um die Überlappung von Untergrundstücken zu minimieren, können Sie Folgendes einleiten:

plt.tight_layout()

vor der Show. Ausbeute:

neater side by side plot

100
Jonathan Eunice

Schauen Sie sich diese Seite an: http://matplotlib.org/examples/pylab_examples/subplots_demo.html

plt.subplots ist ähnlich. Ich denke, es ist besser, da es einfacher ist, Parameter der Figur einzustellen. Die ersten beiden Argumente definieren das Layout (in Ihrem Fall 1 Zeile, 2 Spalten) und andere Parameter ändern Funktionen wie die Abbildungsgröße:

import numpy as np
import matplotlib.pyplot as plt

x1 = np.linspace(0.0, 5.0)
x2 = np.linspace(0.0, 2.0)
y1 = np.cos(2 * np.pi * x1) * np.exp(-x1)
y2 = np.cos(2 * np.pi * x2)

fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(5, 3))
axes[0].plot(x1, y1)
axes[1].plot(x2, y2)
fig.tight_layout()

enter image description here

5
busybear