HOWTO · Matplotlib
Comment ajouter une étiquette sur l'axe des y à l'axe des y secondaire dans Matplotlib
Nous pouvons ajouter une étiquette d'axe y à l'axe y secondaire dans Matplotlib en interagissant avec l'objet axes et en utilisant directement la méthode pandas.DataFrame.plot.
Nous pouvons interagir avec l’objet axes directement ou utiliser la méthode DataFrame.plot pour ajouter une étiquette d’axe y à l’axe y secondaire dans Matplotlib.
interaction directe avec l’objet axes
Nous pouvons faire un tracé avec deux axes Y différents en utilisant deux objets axes différents à l’aide de la fonction twinx(). Nous pouvons maintenant utiliser le deuxième objet axes pour tracer la deuxième variable de l’axe des y et mettre à jour son étiquette.
import numpy as np
import matplotlib.pyplot as plt
a = np.linspace(0, 5, 100)
y1 = np.sin(2 * np.pi * a)
y2 = np.cos(2 * np.pi * a)
fig, ax1 = plt.subplots()
color = "tab:red"
ax1.set_xlabel("time (s)")
ax1.set_ylabel("sin", color=color)
ax1.plot(a, y1, color=color)
ax1.tick_params(axis="y", labelcolor=color)
ax2 = ax1.twinx()
color = "tab:green"
ax2.set_ylabel("cos", color=color)
ax2.plot(a, y2, color=color)
ax2.tick_params(axis="y", labelcolor=color)
fig.tight_layout()
plt.show()
Production:

ax2 = ax1.twinx()
Axes.twinx() crée un nouvel Axes avec un axe y qui est opposé à l’axe original, dans cet exemple axe1.
Méthode DataFrame.plot pour ajouter une étiquette d’axe y à l’axe y secondaire
Nous pouvons ajouter une étiquette sur l’axe des y à l’axe des y secondaire avec des Pandas également. Lorsque nous définissons l’option secondary_y comme True dans la méthode DataFrame.plot, cela retourne différents axes qui peuvent être utilisés pour définir les étiquettes.
import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame(
{
"Age": [22, 12, 18, 25, 30],
"Height": [155, 129, 138, 164, 145],
"Weight": [60, 40, 45, 55, 60],
}
)
ax = df.plot(kind="line", x="Age", y="Height", color="DarkBlue")
ax2 = df.plot(kind="line", x="Age", y="Weight", secondary_y=True, color="Red", ax=ax)
ax.set_ylabel("Height")
ax2.set_ylabel("Weight")
plt.tight_layout()
plt.show()
Production:
