Heim >Backend-Entwicklung >Python-Tutorial >Wie kann die Größe der Figurenbox dynamisch erweitert werden, um eine expandierende Legende in Matplotlib aufzunehmen?

Wie kann die Größe der Figurenbox dynamisch erweitert werden, um eine expandierende Legende in Matplotlib aufzunehmen?

Susan Sarandon
Susan SarandonOriginal
2024-10-18 12:51:30536Durchsuche

How to Expand Figure Box Size Dynamically to Accommodate an Expanding Legend in Matplotlib?

Erweitern des Abbildungsfelds, um mehr Legende unterzubringen

Problembeschreibung

Beim Platzieren einer Legende außerhalb der Achse in Matplotlib kann es gelegentlich vorkommen, dass sie über die Achse hinausragt Grenzen des Figurenfeldes, was zu einem abgeschnittenen Erscheinungsbild führt. Die Größenänderung der Achsenachsen durch Verkleinern ist keine optimale Lösung, da dadurch die Sichtbarkeit der Daten verringert wird.

Dynamische Erweiterung der Abbildungsbox

Die gewünschte Lösung besteht darin, die Größe der Abbildungsbox dynamisch zu erweitern Platzieren Sie eine expandierende Legende.

Implementierung: Benutzerdefinierter Savefig-Aufruf mit bbox_extra_artists

Um dies zu erreichen, kann der Savefig-Funktionsaufruf so angepasst werden, dass er das Argument bbox_extra_artists enthält:

<code class="python">fig.savefig('samplefigure', bbox_extra_artists=(lgd,), bbox_inches='tight')</code>

Dies gibt an, dass das Figurenfeld bei der Berechnung seiner Größe zusätzliche Künstler wie die Legende (lgd) berücksichtigen soll.

Beispiel und Ergebnis

Verwendung dieses modifizierten Savefig-Aufrufs:

<code class="python">import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure(1)
ax = fig.add_subplot(111)
ax.set_title("Trigonometry")
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')
lgd = ax.legend(loc='upper center', bbox_to_anchor=(0.5,-0.1))
ax.grid('on')
fig.savefig('samplefigure', bbox_extra_artists=(lgd,), bbox_inches='tight')</code>

Erzeugt eine Figur, deren Legende über die Achse hinausragt, aber im erweiterten Figurenfeld untergebracht ist:

  Trigonometry

  2
  1
  0
 -1
 -2
 -4π  -2π     0     2π    4π
Inverse tan
Cosine
Sine

Das obige ist der detaillierte Inhalt vonWie kann die Größe der Figurenbox dynamisch erweitert werden, um eine expandierende Legende in Matplotlib aufzunehmen?. 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