Wie man Legenden außerhalb des Grundstücks in Matplotlib platziert

  1. bbox_to_anchor Beispiel
  2. bbox_extra_artists und bbox_inches, um zu verhindern, dass der Legendenkasten abgeschnitten wird

Die Legende kann in der Matplotlib mit Hilfe von bbox_to_anchor außerhalb der Handlung platziert werden. bbox bedeutet bounding box, die die Legende aufnimmt.

plt.legend(bbox_to_anchor=(1.05, 1))

Sie platziert die Legende an der Position (1.05, 1) in der Achsenkoordinate. (0, 0) ist die linke untere Ecke, und (1.0, 1.0) ist die rechte obere Ecke der Achsenkoordinate.

Die tatsächliche Größe und Position der Bounding Box der Legende wird mit dem 4-Tupel-Parameter bbox_to_anchor und loc in der plt.legend definiert.

plt.legend(bbox_to_anchor=(x0, y0, width, height), loc=)

Breite und Höhe sind die Breite und die Höhe des Legendenkastens, und (x0, y0) ist die Koordinate des loc des Begrenzungskastens.

Der Wert von loc könnte eine Zahl oder eine Zeichenkette sein, die die folgende Beziehung hat

Loc-Nummer Loc-String
0 beste
1 oben rechts
2 obere linke Seite
3 unten links
4 unten rechts
5 right
6 Mitte links
7 Mitte rechts
8 unteres Zentrum
9 obere Mitte
10 Zentrum
plt.legend(bbox_to_anchor=(1.05, 1.0, 0.3, 0.2), loc='upper left')

Der obige Code bedeutet, dass der Legendenkasten an der Achsenkoordinate (1.05, 1.0) positioniert ist, die die Breite von 0.3 und die Höhe von 0.2 hat, wobei (1.05, 1.0) die Koordinate der linken oberen Ecke des Legendenbegrenzungsrahmens ist.

bbox_to_anchor Beispiel

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 10, 100)

plt.plot(x, np.sin(x), label="sin(x)")
plt.plot(x, np.cos(x), label="cos(x)")


plt.legend(bbox_to_anchor=(1.05, 1.0), loc='upper left')
plt.tight_layout()
plt.show()

Matplotlib-Legende bbox_to_anchor Beispiel

Mit plt.tight_layout() passen die Subplots sehr gut in die Abbildung.

Der Legendenrahmen würde beschnitten, wenn tight_layout() nicht aufgerufen wird.

Matplotlib Legende bbox_to_anchor Beschnitten

bbox_extra_artists und bbox_inches, um zu verhindern, dass der Legendenkasten abgeschnitten wird

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 10, 100)

plt.plot(x, np.sin(x), label="sin(x)")
plt.plot(x, np.cos(x), label="cos(x)")


lg = plt.legend(bbox_to_anchor=(1.05, 1.0), loc='upper left')

plt.savefig('example.png', 
            dpi=300, 
            format='png', 
            bbox_extra_artists=(lg,), 
            bbox_inches='tight')

bbox_extra_artists gibt die Liste der Artist an, die bei der Berechnung der engen bbox berücksichtigt wird.

Wenn die bbox_inches auf tight gesetzt ist, wird sie die enge bbox der Figur berechnen.

Verwandter Artikel - Matplotlib Legend

  • Wie man die Schriftgröße der Legende in Matplotlib ändert
  • Wie man die Legende in Matplotlib entfernt