Ich versuche, ein Bild (unter Verwendung matplotlib.imshow
) und ein Streudiagramm innerhalb der gleichen Abbildung zu plotten. Wenn Sie dies versuchen, erscheint das Bild kleiner als das Streudiagramm. Kleines Beispiel-Code ist unten dargestellt:Erhalten der gleichen Unterplotgröße mit matplotlib imshow und scatter
import matplotlib.pyplot as plt
import numpy as np
image = np.random.randint(100,200,(200,200))
x = np.arange(0,10,0.1)
y = np.sin(x)
fig, (ax1, ax2) = plt.subplots(1,2)
ax1.imshow(image)
ax2.scatter(x,y)
plt.show()
, die die folgende Abbildung zeigt:
Wie kann ich die beiden sublpots die gleiche Höhe haben? (Und Breite nehme ich an)
ich versucht habe, mit gridspec
wie in this Antwort gezeigt:
fig=plt.figure()
gs=GridSpec(1,2)
ax1=fig.add_subplot(gs[0,0])
ax2=fig.add_subplot(gs[0,1])
ax1.imshow(image)
ax2.scatter(x,y)
Aber das gibt das gleiche Ergebnis. Ich habe auch versucht die subplot manuell anpassen Größen unter Verwendung von:
fig = plt.figure()
ax1 = plt.axes([0.05,0.05,0.45,0.9])
ax2 = plt.axes([0.55,0.19,0.45,0.62])
ax1.imshow(image)
ax2.scatter(x,y)
durch Versuch und Irrtum kann ich die beiden Handlungsstränge auf die richtige Größe bekommen, wenn eine Änderung der Gesamtzahl Größe bedeuten, dass die Handlungsstränge wird nicht länger gleich groß sein.
Gibt es eine Möglichkeit, imshow
und scatter
Plot die gleiche Größe in einer Abbildung erscheinen, ohne die Achsengrößen manuell zu ändern?
Ich verwende Python 2.7 und matplotlib 2.0.0
Das gewünschte Ergebnis war einfach, dass die beiden Teilplots genau die gleiche Größe hatten und so blieben, wenn die Größe der Figur geändert wurde. Wie auch immer, 'aspect = 'auto' hat es geschafft, danke. – DavidG