Setzen Sie die Legende außerhalb der Figur in Seaborn

Salman Mehmood 15 Februar 2024
Setzen Sie die Legende außerhalb der Figur in Seaborn

In diesem Artikel dreht sich alles um die Legende einer Figur in Seaborn. Wir werden verschiedene Tipps geben, wie z. B. das Platzieren der Legende außerhalb der Figur und das Erstellen einer horizontalen Legende in Seaborn.

Legen Sie die Legende außerhalb der Abbildung fest, indem Sie das Argument bbox_to_anchor in Seaborn verwenden

Wenn Sie Ihren Matplotlib-Figuren eine Legende hinzufügen, ist der Ort dieser Legende sehr wichtig. Matplotlib wird versuchen, den besten Ort für Ihre Legende automatisch zu erkennen, aber wir können sie auch in der Handlung verschieben, und besonders manchmal möchten wir die Legende vielleicht ganz aus der Figur herausbewegen.

Da es keine Möglichkeit gibt, die Legende mit Seaborn zu handhaben, benötigen wir Matplotlib, um dieses Problem zu lösen. Mal sehen, wie wir diese Bibliotheken gemeinsam nutzen können.

Fangen wir an, einige Bibliotheken zu importieren und zwei Arrays für die x- und y-Achse zu erstellen. Wir erstellen auch zwei Liniendiagramme mit der Methode lineplot() von Seaborn.

Code:

import seaborn as sb
import numpy as np
import matplotlib.pyplot as plot

sb.set_style("whitegrid")

X1 = np.array([1, 2, 3, 4, 5])
Y1 = np.array([2, 1, 4, 6, 4])

sb.lineplot(X1, Y1, label="blue")
sb.lineplot(X1, Y1 + 2, color="orange", label="orange")

plot.legend(loc="lower right")
plot.show()

Innerhalb der Legend-Funktion gibt es ein Argument namens loc. Dies kann eine Zeichenfolge wie unten rechts annehmen, was bedeutet, dass Sie die Legende in der unteren rechten Ecke platzieren möchten.

Ausgang:

Seaborn Legend Outside - Ausgang 1

Es gibt noch eine andere Sache, wie wir diese Legende vollständig aus der Figur entfernen können. Es gibt viele verschiedene Möglichkeiten, dies zu tun, aber wir zeigen Ihnen den einfachsten Weg.

Um die Legende nach außen zu verschieben, übergeben wir ein Argument namens bbox_to_anchor. Dieses Argument akzeptiert ein Tupel im Bereich von 0 bis 1 für die x- und y-Dimensionen.

Code:

plot.legend(bbox_to_anchor=(1.05, 1), loc="upper left")

Wenn wir also 1.05 und 1 übergeben, wird die Legende in die obere rechte Ecke verschoben. Wenn Sie diesen bbox_to_anchor-Ansatz verwenden, sollten Sie das loc-Argument verwenden, um darzustellen, welche Ecke unserer Legende ausgerichtet werden soll.

Code:

import seaborn as sb
import numpy as np
import matplotlib.pyplot as plot

sb.set_style("whitegrid")

X1 = np.array([1, 2, 3, 4, 5])
Y1 = np.array([2, 1, 4, 6, 4])

sb.lineplot(X1, Y1, label="blue")
sb.lineplot(X1, Y1 + 2, color="orange", label="orange")

plot.legend(bbox_to_anchor=(1.05, 1), loc="upper left")
plot.tight_layout()
plot.show()

Wir haben die obere linke Ecke passiert, was bedeutet, dass sich die obere linke Ecke der Legende an den Stellen 1.05 und 1 befindet.

Seaborn Legend Outside - Ausgang 2

Wenn wir die Position ändern, sagen wir unten links, sehen wir, dass die untere linke Ecke an dieser Position ausgerichtet ist.

import seaborn as sb
import numpy as np
import matplotlib.pyplot as plot

sb.set_style("whitegrid")

X1 = np.array([1, 2, 3, 4, 5])
Y1 = np.array([2, 1, 4, 6, 4])

sb.lineplot(X1, Y1, label="blue")
sb.lineplot(X1, Y1 + 2, color="orange", label="orange")

plot.legend(bbox_to_anchor=(1.05, 1), loc="lower left")
plot.tight_layout()
plot.show()

Aber dieser Ansatz liefert nicht die erwartete Ausgabe.

Ausgang:

Seaborn Legend Outside - Ausgang 3

Versuchen wir einen anderen Ansatz, um die Legende in die untere linke Ecke zu verschieben. Wir müssen nur bbox_to_anchor an die negativen 0,05 und 0 übergeben.

Code:

import seaborn as sb
import numpy as np
import matplotlib.pyplot as plot

sb.set_style("whitegrid")

X1 = np.array([1, 2, 3, 4, 5])
Y1 = np.array([2, 1, 4, 6, 4])

sb.lineplot(X1, Y1, label="blue")
sb.lineplot(X1, Y1 + 2, color="orange", label="orange")

plot.legend(bbox_to_anchor=(-0.05, 0), loc="lower right")
plot.tight_layout()
plot.show()

Jetzt ist es verschoben, und die Legende ist vollständig außerhalb der Figur.

Ausgang:

Seaborn Legend Outside - Ausgang 4

Wir können unsere Legende auch mit dem Argument ncol horizontal machen, und dieses ncol steht für die Anzahl der Spalten. Wir setzen einen positiven Punkt für x und einen negativen Punkt für y; Unser Standort ist der obere mittlere Teil des Begrenzungsrahmens der Legende.

Code:

import seaborn as sb
import numpy as np
import matplotlib.pyplot as plot

sb.set_style("whitegrid")

X1 = np.array([1, 2, 3, 4, 5])
Y1 = np.array([2, 1, 4, 6, 4])

sb.lineplot(X1, Y1, label="blue")
sb.lineplot(X1, Y1 + 2, color="orange", label="orange")

plot.legend(ncol=2, bbox_to_anchor=(0.5, -0.1), loc="upper center")
plot.tight_layout()
plot.show()

Ausgang:

Seaborn Legend Outside - Ausgang 5

Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn

Verwandter Artikel - Seaborn Legend