Maison  >  Article  >  développement back-end  >  Comment ajouter des étiquettes à la légende dans des tracés avec des axes secondaires à l'aide de twinx() ?

Comment ajouter des étiquettes à la légende dans des tracés avec des axes secondaires à l'aide de twinx() ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-31 04:32:30889parcourir

How to Add Labels to the Legend in Plots with Secondary Axes Using twinx()?

Ajout d'étiquettes à la légende dans les tracés avec des axes secondaires à l'aide de twinx()

Avoir plusieurs axes dans un seul tracé peut être utile pour visualiser données provenant de différentes sources ou avec différentes unités. Lorsque vous utilisez la fonction twinx() pour créer un axe secondaire, il peut être nécessaire d'ajouter des étiquettes aux lignes tracées sur l'axe secondaire et de les inclure dans la légende.

Pour ce faire, vous pouvez soit ajouter un légende séparée pour l'axe secondaire en utilisant ax2.legend(loc=0). Cependant, cette approche aboutit à deux légendes distinctes.

Pour un affichage plus cohérent, toutes les étiquettes peuvent être ajoutées à une seule légende en suivant les étapes suivantes :

  • Créez une liste de lignes objets représentant toutes les lignes tracées sur les deux axes.
  • Créez une liste d'étiquettes correspondant aux objets ligne.
  • Utilisez la fonction légende pour ajouter les lignes et les étiquettes à la légende, en passant le paramètre loc pour spécifier l'emplacement de la légende.
<code class="python">import numpy as np
import matplotlib.pyplot as plt
from matplotlib import rc

time = np.arange(10)
temp = np.random.random(10)*30
Swdown = np.random.random(10)*100-10
Rn = np.random.random(10)*100-10

fig = plt.figure()
ax = fig.add_subplot(111)

lns1 = ax.plot(time, Swdown, '-', label = 'Swdown')
lns2 = ax.plot(time, Rn, '-', label = 'Rn')
ax2 = ax.twinx()
lns3 = ax2.plot(time, temp, '-r', label = 'temp')

# Add all lines and labels to a single legend
lns = lns1+lns2+lns3
labs = [l.get_label() for l in lns]
ax.legend(lns, labs, loc=0)

ax.grid()
ax.set_xlabel("Time (h)")
ax.set_ylabel(r"Radiation ($MJ\,m^{-2}\,d^{-1}$)")
ax2.set_ylabel(r"Temperature ($^\circ$C)")
ax2.set_ylim(0, 35)
ax.set_ylim(-20,100)
plt.show()</code>

Ce code produira une seule légende qui comprend toutes les étiquettes des axes principal et secondaire.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn