Mit Seaborn kann ich Boxplots mit mehreren Spalten von einem pandas DataFrame
für dieselbe Figur erstellen. Ich möchte den Flyern (Ausreißern), z. Festlegen des Markierungssymbols, der Farbe und der Markierungsgröße.
Die API-Dokumentation zu seaborn.boxplot liefert jedoch nur ein Argument fliersize
, womit ich die Größe der Flyer, aber nicht die Farbe und das Symbol steuern kann.
Da Seaborn Matplotlib zum Plotten verwendet, dachte ich, ich könnte der Funktion boxplot
ein Matplotlib-Styling-Wörterbuch zur Verfügung stellen:
Ergebnis:
Entsprechend dem mitgelieferten Wörterbuch würde ich einen großen roten Kreis erwarten, der den Flyer von column_c
repräsentiert, aber stattdessen werden die Standardeinstellungen noch verwendet.
Dieser Thread beschreibt ein ähnliches Problem , wenn matplotlib direkt verwendet wird - allerdings aus der Diskussion, die ich vermutete Dies sollte in der Zwischenzeit behoben werden, wenn neuere Versionen von Matplotlib verwendet werden.
Ich habe dies mit einem iPython-Notebook (iPython 3.10), Matplotlib 1.4.3 und Seaborn 0.5.1 versucht.
Seaborns Boxplot-Code ignoriert Ihr Fliederprops-Argument und überschreibt es mit seinem eigenen, bevor Argumente an Matplotlib übergeben werden. Matplotlibs Boxplot gibt auch alle Fliegerobjekte als Teil seines Rückgabewerts zurück, so dass Sie dies nach dem Ausführen von Boxplot ändern können, aber Seaborn gibt das nicht zurück.
Das Überschreiben von flierprops (und sym) scheint wie ein Bug, also werde ich sehen, ob ich es beheben kann: siehe dieses Problem . In der Zwischenzeit sollten Sie stattdessen den Boxplot von Matplotlib in Erwägung ziehen. Der Code von Seaborn kann nützlich sein (Boxplot ist in distributions.py).
Update: Es gibt jetzt eine Pull-Anfrage, die das behebt ( flierprops
und andere *props
, aber nicht sym
)
Tags und Links python matplotlib seaborn