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:
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.
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:
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:
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:
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