Wie man die Legendenposition in Diagrammkoordinaten in Matplotlib angibt

Suraj Joshi 14 November 2020
Wie man die Legendenposition in Diagrammkoordinaten in Matplotlib angibt

Wir können die Position einer Legende in einem Diagramm angeben, indem wir den Wert des loc-Parameters setzen.

Beispiele: Position der Legende in einem Diagramm angeben Koordinaten Matplotlib

import matplotlib.pyplot as plt

x = [1, 2, 3]
y1 = [0.5 * i + 1 for i in x]
y2 = [2 * i + 1 for i in x]

fig, ax = plt.subplots(2, 1)

ax[0].plot(x, y1, "b-", label="0.5x+1")
ax[0].plot(x, y2, "g-", label="2x+1")
ax[0].legend(loc="best")

ax[1].plot(x, y1, "b-", label="0.5x+1")
ax[1].plot(x, y2, "g-", label="2x+1")
ax[1].legend(loc="lower left")

plt.tight_layout()
plt.show()

Ausgabe:

Legen Sie die Position der Legende in den Diagrammkoordinaten fest Matplotlib

Hier haben wir eine Figur mit zwei Nebenhandlungen. In der obersten Nebenhandlung ist loc auf best gesetzt; dies setzt die Legende an die beste Stelle der Figur, wo wir keinen Inhalt haben.

Ähnlich verhält es sich in der zweiten Nebenhandlung unten: Die Legende wird an der unteren linken Position des Begrenzungsrahmens platziert, so dass sie die gesamten Achsen abdeckt. Die Bounding Box wird durch den Parameter bbox_to_anchor spezifiziert, dessen Standardwert (0,0,1,1) ist.

Der Parameter loc kann einen der folgenden Werte annehmen:

best
upper right
upper left
lower left
lower right
right
center left
center right
lower center
upper center
center

Diese Positionen repräsentieren die Position der Legende in Bezug auf die Bounding Box, die durch den Parameter bbox_to_anchor angegeben wird.

In ähnlicher Weise können wir die Legende an einer beliebigen Position in der Abbildung platzieren, indem wir den Wert des Parameters bbox_to_anchor ändern. Der Parameter bbox_to_anchor nimmt ein Tupel, das die Koordinate darstellt, an der die durch den Parameter loc spezifizierte Ecke plaziert wird.

import matplotlib.pyplot as plt

x = [1, 2, 3]
y1 = [0.5 * i + 1 for i in x]
y2 = [2 * i + 1 for i in x]

fig, ax = plt.subplots(2, 1)

ax[0].plot(x, y1, "b-", label="Plot-1")
ax[0].plot(x, y2, "g-", label="Plot-2")
ax[0].legend(loc="upper left", bbox_to_anchor=(0.9, 0.75))
ax[0].scatter((0.9), (0.75), s=70, c="red", transform=ax[0].transAxes)

ax[1].plot(x, y1, "b-", label="Plot-1")
ax[1].plot(x, y2, "g-", label="Plot-2")
ax[1].legend(loc="center right", bbox_to_anchor=(0.6, 0.4))
ax[1].scatter((0.6), (0.4), s=70, c="red", transform=ax[1].transAxes)

plt.tight_layout()
plt.show()

Ausgabe:

Setzen Sie bbox_to_anchor, um die Position der Legende in den Diagrammkoordinaten anzugeben Matplotlib

In der Untergraphik oben haben wir die bbox_to_anchor auf (0.9,0.75) gesetzt, was durch den roten Punkt auf der Untergraphik markiert ist. Der Wert des loc-Parameters "upper left" stellt die obere linke Ecke der Legende dar, die durch den roten Punkt auf der Unterdarstellung markiert ist.

Die untere Nebenhandlung, die bbox_to_anchor, wird auf (0.6,0.4) gesetzt, markiert durch den roten Punkt auf den unteren Achsen der Abbildung. Der Wert von loc wird auf "center right" gesetzt; daher hat die Legende der unteren Achsen ihre center right Ecke am roten Punkt.

Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

Verwandter Artikel - Matplotlib Legend