108 votes

étiquette de l'axe des y de matplotlib sur le côté droit

Existe-t-il un moyen simple de placer l'étiquette de l'axe des y sur le côté droit du graphique ? Je sais que cela peut être fait pour les étiquettes de tic-tac à l'aide de la fonction ax.yaxis.tick_right() mais j'aimerais savoir si cela est également possible pour l'étiquette de l'axe.

Une idée qui m'est venue à l'esprit était d'utiliser

ax.yaxis.tick_right()
ax2 = ax.twinx()
ax2.set_ylabel('foo')

Cependant, cela n'a pas l'effet escompté, à savoir placer toutes les étiquettes (étiquettes de coche et d'axe) sur le côté droit, tout en préservant l'étendue de l'axe des ordonnées. En bref, j'aimerais pouvoir déplacer toutes les étiquettes de l'axe des y de la gauche vers la droite.

191voto

Gerrat Points 9072

On dirait que vous pouvez le faire avec :

ax.yaxis.set_label_position("right")
ax.yaxis.tick_right()

Voir aquí pour un exemple.

25voto

Gourav Mahapatra Points 358

Si vous souhaitez suivre l'exemple donné dans le document matplotlib et créer une figure avec des étiquettes de part et d'autre des axes, mais sans avoir à utiliser la fonction subplots() Voici ma solution :

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()

7voto

mm_ Points 134

Les réponses précédentes sont dépassées. Voici le code le plus récent pour l'exemple ci-dessus :

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()

De aquí .

5voto

dbouz Points 71

(désolé de ressusciter la question)

Je sais que c'est un sale coup, mais si tu ne veux pas descendre dans le maniement des haches et rester dans plt vous pouvez utiliser les commandes labelpad argument scalaire pour positionner votre étiquette à droite du côté du graphique. Cela fonctionne après quelques essais et erreurs, et la valeur scalaire exacte dépend peut-être ( ?) des dimensions de votre figure.

Exemple :

# move ticks
plt.tick_params(axis='y', which='both', labelleft=False, labelright=True)

# move label
plt.ylabel('Your label here', labelpad=-725, fontsize=18)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X