239 votes

Ajout d'une étiquette à l'axe des y secondaire dans matplotlib

Je peux ajouter une étiquette y à l'axe y de gauche en utilisant plt.ylabel mais comment puis-je l'ajouter à l'axe y secondaire ?

table = sql.read_frame(query,connection)

table[0].plot(color=colors[0],ylim=(0,100))
table[1].plot(secondary_y=True,color=colors[1])
plt.ylabel('$')

472voto

Paul H Points 5612

Le meilleur moyen est d'interagir avec le axes directement l'objet

import numpy as np
import matplotlib.pyplot as plt
x = np.arange(0, 10, 0.1)
y1 = 0.05 * x**2
y2 = -1 *y1

fig, ax1 = plt.subplots()

ax2 = ax1.twinx()
ax1.plot(x, y1, 'g-')
ax2.plot(x, y2, 'b-')

ax1.set_xlabel('X data')
ax1.set_ylabel('Y1 data', color='g')
ax2.set_ylabel('Y2 data', color='b')

plt.show()

example graph

46voto

kiril Points 111

Il existe une solution directe qui ne nécessite pas l'utilisation de matplotlib : il suffit de pandas.

Modification de l'exemple original :

table = sql.read_frame(query,connection)

ax = table[0].plot(color=colors[0],ylim=(0,100))
ax2 = table[1].plot(secondary_y=True,color=colors[1], ax=ax)

ax.set_ylabel('Left axes label')
ax2.set_ylabel('Right axes label')

En gros, lorsque le secondary_y=True est donnée (bien que l'option ax=ax est également transmis) pandas.plot renvoie un axe différent que nous utilisons pour définir les étiquettes.

Je sais qu'on a répondu à cette question il y a longtemps, mais je pense que cette approche en vaut la peine.

19voto

Nimrod Points 28

Pour tous ceux qui tombent sur cet article parce que les pandas sont mentionnés, vous avez maintenant l'option très élégante et simple de en accédant directement au axe secondaire_y dans les pandas avec ax.right_ax

Ainsi, en paraphrasant l'exemple initialement posté, vous écrirez :

table = sql.read_frame(query,connection)

ax = table[[0, 1]].plot(ylim=(0,100), secondary_y=table[1])
ax.set_ylabel('$')
ax.right_ax.set_ylabel('Your second Y-Axis Label goes here!')

(ceci est déjà mentionné dans ces posts également : 1 2 )

13voto

Micke Points 772

Je n'ai pas accès à Python pour le moment, mais de mémoire.. :

fig = plt.figure()

axes1 = fig.add_subplot(111)
# set props for left y-axis here

axes2 = axes1.twinx()   # mirror them
axes2.set_ylabel(...)

12voto

Hunaphu Points 136

Exemple simple avec peu de loc :

plot(y1)
plt.gca().twinx().plot(y2, color = 'r') # default color is same as first ax

Explication :

ax = plt.gca()    # Get current axis
ax2 = ax.twinx()  # make twin axis based on x
ax2.plot(...)     # ...

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