Heim >Backend-Entwicklung >Python-Tutorial >Wie kann eine Cut-off-Legende in Matplotlib verhindert und die Datensichtbarkeit aufrechterhalten werden?

Wie kann eine Cut-off-Legende in Matplotlib verhindert und die Datensichtbarkeit aufrechterhalten werden?

Barbara Streisand
Barbara StreisandOriginal
2024-10-18 12:20:03479Durchsuche

How to Prevent Cut-off Legend in Matplotlib and Maintain Data Visibility?

Adressierung der abgeschnittenen Legende in Matplotlib durch Ändern der Größe des Abbildungsfelds

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn