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

Jinku Hu 25 Juni 2020
  1. bbox_to_anchor Beispiel
  2. bbox_extra_artists und bbox_inches, um zu verhindern, dass der Legendenkasten abgeschnitten wird
Wie man Legenden außerhalb des Grundstücks in Matplotlib platziert

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=)

width und height 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.

Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Verwandter Artikel - Matplotlib Legend