Gibt es eine einfache Möglichkeit, die Beschriftung der y-Achse auf der rechten Seite des Diagramms anzubringen? Ich weiß, dass dies für die Tick-Beschriftungen mit möglich ist ax.yaxis.tick_right()
, aber ich würde gerne wissen, ob dies auch für die Achsenbeschriftung möglich ist.
Eine Idee, die mir in den Sinn kam, war zu verwenden
ax.yaxis.tick_right()
ax2 = ax.twinx()
ax2.set_ylabel('foo')
Dies hat jedoch nicht den gewünschten Effekt, dass alle Beschriftungen (Häkchen- und Achsenbeschriftungen) auf der rechten Seite platziert werden, während die Ausdehnung der y-Achse erhalten bleibt. Kurz gesagt, ich möchte eine Möglichkeit, alle Beschriftungen der y-Achse von links nach rechts zu verschieben.
python
matplotlib
labels
apdnu
quelle
quelle
rhs = lambda ax: (ax.yaxis.set_label_position("right"), ax.yaxis.tick_right())
Wenn Sie dem Beispiel in folgen
matplotlib
und eine Figur mit Beschriftungen auf beiden Seiten der Achsen erstellen möchten , ohne diesubplots()
Funktion verwenden zu müssen, ist hier meine Lösung:from matplotlib import pyplot as plt import numpy as np ax1 = plt.plot() t = np.arange(0.01, 10.0, 0.01) s1 = np.exp(t) plt.plot(t,s1,'b-') plt.xlabel('t (s)') plt.ylabel('exp',color='b') ax2 = ax1.twinx() s2 = np.sin(2*np.pi*t) ax2.plot(t, s2, 'r.') plt.ylabel('sin', color='r') plt.show()
quelle
File "prueba.py", line 11, in <module>
ax2 = ax1.twinx()
AttributeError: 'list' object has no attribute 'twinx'
ax1 = plt.subplot()
(Entschuldigung für die Wiederbelebung der Frage)
Ich weiß, dass es ein schmutziger Trick ist, aber wenn Sie nicht zur Achsenbehandlung übergehen und in
plt
Befehlen bleiben möchten , könnenlabelpad
Sie das Etikett mit dem Skalarargument rechts von der Diagrammseite positionieren. Funktioniert nach einigem Ausprobieren, und der genaue Skalarwert (?) Hat möglicherweise mit den Abmessungen Ihrer Figurengröße zu tun.Beispiel:
# move ticks plt.tick_params(axis='y', which='both', labelleft=False, labelright=True) # move label plt.ylabel('Your label here', labelpad=-725, fontsize=18)
quelle
Die vorherigen Antworten sind veraltet. Hier ist der neueste Code für das obige Beispiel:
import numpy as np import matplotlib.pyplot as plt t = np.arange(0.01, 10.0, 0.01) data1 = np.exp(t) data2 = np.sin(2 * np.pi * t) fig, ax1 = plt.subplots() color = 'tab:red' ax1.set_xlabel('time (s)') ax1.set_ylabel('exp', color=color) ax1.plot(t, data1, color=color) ax1.tick_params(axis='y', labelcolor=color) ax2 = ax1.twinx() # instantiate a second axes that shares the same x-axis color = 'tab:blue' ax2.set_ylabel('sin', color=color) # we already handled the x-label with ax1 ax2.plot(t, data2, color=color) ax2.tick_params(axis='y', labelcolor=color) fig.tight_layout() # otherwise the right y-label is slightly clipped plt.show()
Von hier aus .
quelle