Sie können eine große Unterzeichnung erstellen, die die beiden Unterzeichnungen abdeckt, und dann die allgemeinen Beschriftungen festlegen.
import random
import matplotlib.pyplot as plt
x = range(1, 101)
y1 = [random.randint(1, 100) for _ in xrange(len(x))]
y2 = [random.randint(1, 100) for _ in xrange(len(x))]
fig = plt.figure()
ax = fig.add_subplot(111) # The big subplot
ax1 = fig.add_subplot(211)
ax2 = fig.add_subplot(212)
# Turn off axis lines and ticks of the big subplot
ax.spines['top'].set_color('none')
ax.spines['bottom'].set_color('none')
ax.spines['left'].set_color('none')
ax.spines['right'].set_color('none')
ax.tick_params(labelcolor='w', top=False, bottom=False, left=False, right=False)
ax1.loglog(x, y1)
ax2.loglog(x, y2)
# Set common labels
ax.set_xlabel('common xlabel')
ax.set_ylabel('common ylabel')
ax1.set_title('ax1 title')
ax2.set_title('ax2 title')
plt.savefig('common_labels.png', dpi=300)
Eine andere Möglichkeit ist die Verwendung von fig.text (), um die Positionen der allgemeinen Beschriftungen direkt festzulegen.
import random
import matplotlib.pyplot as plt
x = range(1, 101)
y1 = [random.randint(1, 100) for _ in xrange(len(x))]
y2 = [random.randint(1, 100) for _ in xrange(len(x))]
fig = plt.figure()
ax1 = fig.add_subplot(211)
ax2 = fig.add_subplot(212)
ax1.loglog(x, y1)
ax2.loglog(x, y2)
# Set common labels
fig.text(0.5, 0.04, 'common xlabel', ha='center', va='center')
fig.text(0.06, 0.5, 'common ylabel', ha='center', va='center', rotation='vertical')
ax1.set_title('ax1 title')
ax2.set_title('ax2 title')
plt.savefig('common_labels_text.png', dpi=300)
ax
erstellt werden muss , bevorax1
undax2
, da sonst das große Grundstück erstreckt sich auf die kleinen Parzellen auf.Ein einfacher Weg mit
subplots
:quelle
'off'
zuFalse
neueren Versionen von Matplotlib (ich habe 2.2.2)for ax in axes: ax.plot(x, y)
scheint nichts Gutes zu tun.Die Antwort von Wen-wei Liao ist gut, wenn Sie nicht versuchen, Vektorgrafiken zu exportieren, oder wenn Sie Ihre Matplotlib-Backends so eingerichtet haben, dass farblose Achsen ignoriert werden. Andernfalls werden die ausgeblendeten Achsen in der exportierten Grafik angezeigt.
Meine Antwort
suplabel
hier ähnelt der,fig.suptitle
die diefig.text
Funktion verwendet. Daher wird kein Achsenkünstler geschaffen und farblos gemacht. Wenn Sie jedoch versuchen, es mehrmals aufzurufen, wird (wiefig.suptitle
auch) Text übereinander hinzugefügt . Wen-wei Liaos Antwort antwortet nicht, dafig.add_subplot(111)
dasselbe Axes-Objekt zurückgegeben wird, wenn es bereits erstellt wurde.Meine Funktion kann auch aufgerufen werden, nachdem die Diagramme erstellt wurden.
quelle
Hier ist eine Lösung, bei der Sie das ylabel eines der Diagramme festlegen und dessen Position so anpassen, dass es vertikal zentriert ist. Auf diese Weise vermeiden Sie von KYC erwähnte Probleme.
quelle
plt.setp()
wird den Job machen:quelle
quelle
Die Methoden in den anderen Antworten funktionieren nicht richtig, wenn die yticks groß sind. Das ylabel überlappt sich entweder mit Zecken, wird links abgeschnitten oder ist völlig unsichtbar / außerhalb der Figur.
Ich habe die Antwort von Hagne so geändert, dass sie mit mehr als einer Spalte von Unterplots sowohl für xlabel als auch für ylabel funktioniert, und sie verschiebt den Plot, um das ylabel in der Abbildung sichtbar zu halten.
Es funktioniert für das folgende Beispiel, während Hagchs Antwort kein ylabel zeichnet (da es sich außerhalb der Leinwand befindet) und das ylabel von KYC sich mit den Häkchen überschneidet:
Wenn Sie mit der farblosen Achse gut zurechtkommen, habe ich die Lösung von Julian Chen so geändert, dass sich das Etikett nicht mit den Häkchen überschneidet.
Grundsätzlich müssen wir nur die Ylims der Farblosen so einstellen, dass sie mit den größten Ylims der Unterzeichnungen übereinstimmen, sodass die farblosen Häkchen die richtige Position für die Ylabels festlegen.
Auch hier müssen wir die Handlung verkleinern, um ein Abschneiden zu verhindern. Hier habe ich den zu verkleinernden Betrag hart codiert, aber Sie können herumspielen, um eine Zahl zu finden, die für Sie funktioniert, oder sie wie in der obigen Methode berechnen.
quelle