Si vous n'incluez aucune option dans ʻax.legend () `.
python
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-3, 3, 101)
y1 = np.sin(x * np.pi)
y2 = np.cos(x * 2 * np.pi) * 0.5
fig = plt.figure()
ax = fig.add_subplot(111)
#Spécifiez le nom de la courbe utilisé pour la légende avec l'option d'étiquette
ax.plot(x, y1, c="r", label="$\mathrm{sin}(x)$")
ax.plot(x, y2, c="b", label="$0.5 \mathrm{cos}(2x)$")
ax.grid(axis='both')
#Afficher la légende
ax.legend()
La même figure que ci-dessus est dessinée en utilisant les informations de courbe et les informations d'étiquette acquises par ʻax.get_legend_handles_labels () `, comme indiqué ci-dessous.
python
ax.plot(x, y1, c="r", label="$\mathrm{sin}(x)$")
ax.plot(x, y2, c="b", label="$0.5 \mathrm{cos}(2x)$")
ax.grid(axis='both')
#Une liste d'objets courbes avec étiquette spécifiée pour les mains,
#labs contient une liste d'étiquettes correspondantes
hans, labs = ax.get_legend_handles_labels()
#Afficher la légende
ax.legend(handles=hans, labels=labs)
Les informations de courbe et les informations d'étiquette acquises par ʻax.get_legend_handles_labels () `peuvent également être spécifiées comme suit.
python
l1 = ax.plot(x, y1, c="r")
l2 = ax.plot(x, y2, c="b")
ax.grid(axis='both')
#Afficher la légende
#Puisque l1 et l2 sont de type liste,+Rejoindre un opérateur
#Dans ce cas, les poignées peuvent être omises.
ax.legend(handles=l1+l2, labels=["$\mathrm{sin}(x)$", "$0.5 \mathrm{cos}(2x)$"])
Par exemple, si vous souhaitez inverser l'ordre des légendes, procédez comme suit.
python
x = np.linspace(-3,3,101)
fig = plt.figure(figsize=(10,5))
#Figure de gauche
ax1 = fig.add_subplot(121)
#Figure droite
ax2 = fig.add_subplot(122)
for i in np.linspace(-1,1,5):
ax1.plot(x, np.sin(x)+i, label=str(i))
ax2.plot(x, np.sin(x)+i, label=str(i))
#Obtenir des informations sur la légende
hans, labs = ax1.get_legend_handles_labels()
#Affichage de la légende à gauche
ax1.legend(handles=hans, labels=labs, fontsize=8)
#Affichage de la légende à droite (ordre inverse)
ax2.legend(handles=hans[::-1], labels=labs[::-1], fontsize=8)
Les positions dans l'axe sont définies pour les nombres de 1 à 9. Vous pouvez également spécifier la chaîne de caractères correspondante ("en haut à droite", "en haut à gauche", etc.).
python
fig = plt.figure(figsize=(10,10))
for i in range(1,9+1):
ax = fig.add_subplot(330+i)
#Même si vous videz la liste nécessaire au dessin
#Le style de la courbe est défini et reflété dans la légende.
ax.plot([], [], c="r", label="sin")
ax.plot([], [], c="b", label="cos")
#Ajouter du texte vert (centré sur l'axe)
ax.text(0.5, 0.5, "loc={}".format(i),
c="g", fontsize=30,
horizontalalignment="center",
verticalalignment="center", )
#Dessin d'une légende avec loc spécifié
ax.legend(loc=i)
bbox_to_anchor
), en changeant le nombre de colonnes ( ncol
)Pour faciliter la compréhension, j'ai ajouté un marqueur vert aux coordonnées spécifiées par bbox_to_anchor
.
python
fig = plt.figure(figsize=(10,10))
#en haut à gauche
ax = fig.add_subplot(321)
ax.plot([], [], c="r", label="sin")
ax.plot([], [], c="b", label="cos")
#Dessinez une légende en haut de l'axe
#Point de référence en bas au centre de la fenêtre de légende
#Les coordonnées du point de référence sont le centre de l'axe dans la direction horizontale et légèrement au-dessus du côté supérieur de l'axe dans la direction verticale.
#Appliquer un affichage à 2 colonnes avec ncol
ax.legend(loc="lower center", bbox_to_anchor=(0.5, 1.02,), borderaxespad=0, ncol=2)
# bbox_to_Ajouter un marqueur vert à la position d'ancrage
# clip_on=Permet de dessiner en dehors de l'axe avec False
# transform=ax.Dans transAxes, les coordonnées inférieure gauche et supérieure droite de l'axe sont(0,0)(1,1)Appliquez le système qui devient.
circle = plt.Circle((0.5, 1.02,), 0.01, color='g', clip_on=False, transform=ax.transAxes)
ax.add_artist(circle)
#En haut à droite
ax = fig.add_subplot(322)
ax.plot([], [], c="r", label="sin")
ax.plot([], [], c="b", label="cos")
#Dessinez une légende dans le coin supérieur droit de l'axe
#Point de référence en haut à gauche de la fenêtre de légende
#Les coordonnées du point de référence sont légèrement à droite du côté droit de l'axe dans le sens horizontal et du côté supérieur de l'axe dans le sens vertical.
ax.legend(loc="upper left", bbox_to_anchor=(1.02, 1.0,), borderaxespad=0)
circle = plt.Circle((1.02, 1.0,), 0.01, color='g', clip_on=False, transform=ax.transAxes)
ax.add_artist(circle)
#Milieu droit
ax = fig.add_subplot(324)
ax.plot([], [], c="r", label="sin")
ax.plot([], [], c="b", label="cos")
#Dessinez une légende au milieu à droite de l'axe
#Point de référence au milieu à gauche de la fenêtre de légende
#Les coordonnées du point de référence sont légèrement à droite du côté droit de l'axe dans la direction horizontale et le centre de l'axe dans la direction verticale.
ax.legend(loc="center left", bbox_to_anchor=(1.02, 0.5,), borderaxespad=0)
circle = plt.Circle((1.02, 0.5,), 0.01, color='g', clip_on=False, transform=ax.transAxes)
ax.add_artist(circle)
#En bas à gauche
ax = fig.add_subplot(325)
ax.plot([], [], c="r", label="sin")
ax.plot([], [], c="b", label="cos")
#Dessinez une légende en bas de l'axe
#Point de référence au centre de la fenêtre de légende
#Les coordonnées du point de référence sont le centre de l'axe dans la direction horizontale et plus que le côté inférieur de l'axe dans la direction verticale.
ax.legend(loc="upper center", bbox_to_anchor=(0.5, -0.1,), borderaxespad=0, ncol=2)
circle = plt.Circle((0.5, -0.1,), 0.01, color='g', clip_on=False, transform=ax.transAxes)
ax.add_artist(circle)
#En bas à droite
ax = fig.add_subplot(326)
ax.plot([], [], c="r", label="sin")
ax.plot([], [], c="b", label="cos")
#Dessinez une légende en bas à droite de l'axe
#Point de référence en bas à gauche de la fenêtre de légende
#Les coordonnées du point de référence sont légèrement à droite du côté droit de l'axe dans le sens horizontal et du côté inférieur de l'axe dans le sens vertical.
#Appliquer un affichage à 2 colonnes avec ncol
ax.legend(loc="lower left", bbox_to_anchor=(1.02, 0.0,), borderaxespad=0)
circle = plt.Circle((1.02, 0.0,), 0.01, color='g', clip_on=False, transform=ax.transAxes)
ax.add_artist(circle)
Si vous passez de borderaxespad = 0
dans le code ci-dessus à borderaxespad = 1
, ce sera comme indiqué dans la figure ci-dessous. Ce nombre est défini comme une valeur relative avec le nombre de points spécifié par font-size comme 1.
Combinez les deux ci-dessus.
python
x = np.linspace(-3,3,101)
y1 = np.sin(x * np.pi)
y2 = np.cos(x * 2 * np.pi) * 0.5
z = np.tan(x * np.pi)
fig = plt.figure(figsize=(10,5))
#Figure de gauche
#Dessinez la légende de chaque axe indépendamment
ax = fig.add_subplot(131)
ax.plot(x, y1, c="r", label="$\mathrm{sin}(x)$")
ax.plot(x, y2, c="b", label="$0.5 \mathrm{cos}(2x)$")
ax.grid(axis='both')
#Affichage de la légende du graphique du 1er axe
ax.legend(loc="upper left", bbox_to_anchor=(1.2, 1.0))
#2ème axe
ax2 = ax.twinx()
ax2.plot(x, z, "g", marker="o", lw=0, ms=2, label = '$\mathrm{tan}(x)$')
ax2.set_ylim(-3,3)
#Affichage de la légende du graphique sur le deuxième axe
ax2.legend(loc="lower left", bbox_to_anchor=(1.2, 0.0))
#Figure droite
#Intégrer la légende des deux axes
ax = fig.add_subplot(133)
ax.plot(x, y1, c="r", label="$\mathrm{sin}(x)$")
ax.plot(x, y2, c="b", label="$0.5 \mathrm{cos}(2x)$")
ax.grid(axis='both')
#Conservation des informations de la légende du 1er axe
hans1, labs1 = ax.get_legend_handles_labels()
#2ème axe
ax2 = ax.twinx()
ax2.plot(x, z, "g", marker="o", lw=0, ms=2, label = '$\mathrm{tan}(x)$')
ax2.set_ylim(-3,3)
#Rétention des informations de légende de l'Axe 2
hans2, labs2 = ax2.get_legend_handles_labels()
#Afficher la légende
ax.legend(hans1+hans2, labs1+labs2, loc="upper left", bbox_to_anchor=(1.2, 1.0))