In Matplotlib führt das Verschieben der Legende außerhalb der Plotachse häufig dazu, dass sie durch den Abbildungsrahmen abgeschnitten wird. Obwohl als Lösung eine Verkleinerung der Achse vorgeschlagen wurde, verringert sich dadurch die Sichtbarkeit der Daten, insbesondere bei der Darstellung komplexer Diagramme mit zahlreichen Legendeneinträgen.
Ein effektiverer Ansatz, wie in der Antwort von Benjamin Root auf der Matplotlib-Mailingliste hervorgehoben, beinhaltet Ändern des Savefig-Aufrufs, um die Legende als zusätzlichen Künstler einzubinden:
fig.savefig('samplefigure', bbox_extra_artists=(lgd,), bbox_inches='tight')
Diese Methode, ähnlich Durch die Verwendung von „tight_layout“ kann Savefig die Legende bei der Berechnung der Größe des Figurenfelds berücksichtigen.
Das folgende erweiterte Codebeispiel demonstriert die Lösung:
import matplotlib.pyplot as plt import numpy as np plt.gcf().clear() x = np.arange(-2*np.pi, 2*np.pi, 0.1) fig = plt.figure(1) ax = fig.add_subplot(111) ax.plot(x, np.sin(x), label='Sine') ax.plot(x, np.cos(x), label='Cosine') ax.plot(x, np.arctan(x), label='Inverse tan') handles, labels = ax.get_legend_handles_labels() lgd = ax.legend(handles, labels, loc='upper center', bbox_to_anchor=(0.5,-0.1)) text = ax.text(-0.2,1.05, "Aribitrary text", transform=ax.transAxes) ax.set_title("Trigonometry") ax.grid('on') fig.savefig('samplefigure', bbox_extra_artists=(lgd,text), bbox_inches='tight')
Dies passt nun die Größe des Figurenfelds dynamisch an die Legende an und verhindert so deren Abschneiden, während die Datensichtbarkeit erhalten bleibt.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3