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() ?
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 :
<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!