Das Problem ist die Verwendung von aspect='equal'
, die verhindert, dass sich die Unterzeichnungen auf ein beliebiges Seitenverhältnis ausdehnen und den gesamten leeren Raum ausfüllen.
Normalerweise würde dies funktionieren:
import matplotlib.pyplot as plt
ax = [plt.subplot(2,2,i+1) for i in range(4)]
for a in ax:
a.set_xticklabels([])
a.set_yticklabels([])
plt.subplots_adjust(wspace=0, hspace=0)
Das Ergebnis ist folgendes:
Mit, aspect='equal'
wie im folgenden Code:
import matplotlib.pyplot as plt
ax = [plt.subplot(2,2,i+1) for i in range(4)]
for a in ax:
a.set_xticklabels([])
a.set_yticklabels([])
a.set_aspect('equal')
plt.subplots_adjust(wspace=0, hspace=0)
Das bekommen wir:
Der Unterschied in diesem zweiten Fall besteht darin, dass Sie die x- und y-Achse gezwungen haben, die gleiche Anzahl von Einheiten / Pixel zu haben. Da die Achsen standardmäßig von 0 auf 1 gehen (dh bevor Sie etwas zeichnen), verwenden Sieaspect='equal'
erzwingt die , dass jede Achse ein Quadrat ist. Da die Figur kein Quadrat ist, fügt Pyplot einen zusätzlichen Abstand zwischen den Achsen horizontal hinzu.
Um dieses Problem zu umgehen, können Sie Ihre Figur auf das richtige Seitenverhältnis einstellen. Wir werden hier die objektorientierte Pyplot-Schnittstelle verwenden, die ich im Allgemeinen für überlegen halte:
import matplotlib.pyplot as plt
fig = plt.figure(figsize=(8,8)) # Notice the equal aspect ratio
ax = [fig.add_subplot(2,2,i+1) for i in range(4)]
for a in ax:
a.set_xticklabels([])
a.set_yticklabels([])
a.set_aspect('equal')
fig.subplots_adjust(wspace=0, hspace=0)
Hier ist das Ergebnis:
None
tut nicht das, was du denkst, sondern bedeutet "Standard verwenden".