Python Matplotlib Y-Axis ticks sur le côté droit du tracé


112

J'ai un tracé linéaire simple et j'ai besoin de déplacer les graduations de l'axe y du côté gauche (par défaut) du tracé vers le côté droit. Des idées sur la façon de faire cela?

Réponses:


192

Utilisation ax.yaxis.tick_right()

par exemple:

from matplotlib import pyplot as plt

f = plt.figure()
ax = f.add_subplot(111)
ax.yaxis.tick_right()
plt.plot([2,3,4,5])
plt.show()

entrez la description de l'image ici


Excellente réponse, vous obtenez un +1, je vous donnerais un autre +1 pour la photo mais je suis limité à seulement 1.
lukecampbell

intéressant que cela provoque le retour des noms de tiques même s'ils devraient être supprimés par sharey = True
endolith

Et si je veux les graduations et les étiquettes à gauche et à droite?
AstroFloyd

1
Je n'ai pas expliqué pourquoi, mais cela casse si vous avez des sous-parcelles avec sharey=True.
Steven C. Howell

Quelle est la commande pour faire apparaître les coches à gauche et à droite? Merci!
tommy.carstensen

99

Pour une bonne utilisation des étiquettes ax.yaxis.set_label_position("right"), c'est-à-dire:

f = plt.figure()
ax = f.add_subplot(111)
ax.yaxis.tick_right()
ax.yaxis.set_label_position("right")
plt.plot([2,3,4,5])
ax.set_xlabel("$x$ /mm")
ax.set_ylabel("$y$ /mm")
plt.show()

57

La réponse de joaquin fonctionne, mais a pour effet secondaire de supprimer les tiques du côté gauche des axes. Pour résoudre ce problème, faites tick_right()un appel à set_ticks_position('both'). Un exemple révisé:

from matplotlib import pyplot as plt

f = plt.figure()
ax = f.add_subplot(111)
ax.yaxis.tick_right()
ax.yaxis.set_ticks_position('both')
plt.plot([2,3,4,5])
plt.show()

Le résultat est un tracé avec des graduations des deux côtés, mais des étiquettes de coche à droite.

entrez la description de l'image ici


24

Au cas où quelqu'un le demande (comme je l'ai fait), cela est également possible lorsque l'on utilise subplot2grid. Par exemple:

import matplotlib.pyplot as plt
plt.subplot2grid((3,2), (0,1), rowspan=3)
plt.plot([2,3,4,5])
plt.tick_params(axis='y', which='both', labelleft='off', labelright='on')
plt.show()

Cela montrera ceci:

entrez la description de l'image ici


4
Cela fonctionne également avec ax.tick_params(axis='y', which='both', labelleft='off', labelright='on'). Mais ça ne bouge pas leylabel
Eric

1
Eh bien, vous pouvez toujours utiliser plt.gca()pour obtenir l'objet axes actuel. Par conséquent, vous utiliseriez:plt.gca().yaxis.set_label_position("right")
sannaj
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.