In Matplotlib führt das Verschieben der Legende außerhalb der Plotachse häufig dazu, dass sie durch das Abbildungsfeld abgeschnitten wird. Als Lösung wurde zwar das Verkleinern der Achse vorgeschlagen, es verringert jedoch 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 einzubeziehen:
fig.savefig('samplefigure', bbox_extra_artists=(lgd,), bbox_inches='tight')
Diese Methode, ähnlich der Verwendung von „tight_layout“, ermöglicht es savefig, die Legende bei der Berechnung der Größe des Figurenfelds zu berücksichtigen.
Die 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')
Dadurch wird nun die Größe des Abbildungsfelds dynamisch angepasst, um die Legende aufzunehmen, wodurch ein Abschneiden verhindert wird, während die Datensichtbarkeit erhalten bleibt.
Das obige ist der detaillierte Inhalt vonWie kann eine Cut-off-Legende in Matplotlib verhindert und die Datensichtbarkeit aufrechterhalten werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!