Tweaking seaborn.boxplot
Ich würde gerne vergleichen, eine Reihe von Verteilungen der scores (score
), gruppiert nach einigen Kategorien (centrality
) und gefärbt durch einige andere (model
). Ich habe versucht, die folgenden mit seaborn:
plt.figure(figsize=(14,6))
seaborn.boxplot(x="centrality", y="score", hue="model", data=data, palette=seaborn.color_palette("husl", len(models) +1))
seaborn.despine(offset=10, trim=True)
plt.savefig("/home/i11/staudt/Eval/properties-replication-test.pdf", bbox_inches="tight")
Gibt es einige Probleme, die ich habe mit diesem Grundstück:
- Es eine große Anzahl von Ausreißern und ich weiß nicht, wie Sie hier gezeichnet wird. Kann ich diese entfernen? Kann ich das Aussehen ändern, um zu zeigen, weniger Kabelsalat? Kann ich die Farbe zumindest so, dass Ihre Farbe stimmt mit der box Farbe?
- Die
model
Wertoriginal
ist etwas besonderes, weil alle anderen Verteilungen verglichen werden sollen, um die Verteilung deroriginal
. Diese sollten visuell spiegelt sich in der Handlung. Kann ich machenoriginal
das erste Kästchen jeder Gruppe? Kann ich offset oder markieren Sie es anders irgendwie? Wäre es möglich, zeichnen Sie eine horizontale Linie durch den median der einzelnenoriginal
Vertrieb und durch die Gruppe von Boxen? - einige der Werte, die von
score
sind sehr klein, wie zu tun ordnungsgemäße Skalierung der y-Achse, um Ihnen zu zeigen?
EDIT:
Hier ist ein Beispiel mit einem log-skaliert die y-Achse, ist auch noch nicht ideal. Warum tun das einige Boxen scheinen abgeschnitten zu low-end?
- Die Blaue Ausreißer sind matplotlib Fehler, und Sie können vermieden werden, indem die Aktualisierung Ihrer seaborn. Aber ich würde sicherlich nicht nur entfernen Sie die Ausreißer!
- Haben Sie versucht, log-Skalierung die y-variable?
- Ja, aber das "komprimiert", die bars der größeren Werte sehr viel an der Spitze der Handlung. Gibt es einen Kompromiss, D. H. log-Skalierung für nur einen Teil der Achse?
- Und manchmal sind die Gruppen schwer zu unterscheiden, z.B. wenn die Boxen nicht zu berühren. Ist es möglich, zu zeichnen vertikalen Linien trennen die Gruppen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ausreißer display
Sollten Sie in der Lage zu passieren, alle Argumente zu
seaborn.boxplot
, die übergeben werden könnenplt.boxplot
(siehe Dokumentation), so könnte man anpassen die Anzeige der Ausreißer durch setzenflierprops
. Hier sind einige Beispiele, was Sie tun können, mit Ihrem Ausreißer.Wenn Sie nicht wollen, um Sie anzuzeigen, die Sie tun könnten,
oder könnten Sie hellgrau wie so:
Reihenfolge der Gruppen
Können Sie die Reihenfolge der Gruppen manuell mit
hue_order
z.B.Skalierung der y-Achse
Sie konnte nur die minimalen und maximalen Werte aller y-Werte, und legen
y_lim
entsprechend? So etwas wie dieses:EDIT: Dieser Letzte Punkt ist nicht wirklich sinnvoll, da die automatische
y_lim
Angebot beinhaltet bereits alle Werte, aber ich lasse es einfach, wie ein Beispiel zum anpassen dieser Einstellungen. Wie bereits erwähnt in den Kommentaren, log-Skalierung) wohl mehr Sinn macht.