2016-03-18 6 views
2

Ich verwende Seaborn, um einen Boxplot zu erstellen. Wenn ich eine Spalte für die Gruppierung/Färbung der Boxen vorschlage, wird die Breite der Boxen so schmal, dass sie schwer zu sehen sind. Die einzige Änderung, die ich mache, ist die Angabe eines Arguments für den Farbton, der auf eine Spalte im übergebenen Datenrahmen zeigt. Ich habe versucht, den Parameter 'width' zu verwenden (wie erwähnt here), der die Breite der Boxplots erhöht, aber auch die Entfernung, in der sie verteilt sind.Seaborn boxplots ändert (verengt) die Breite der Boxen, wenn ein Farbton ausgewählt wird, wie kann ich das beheben?

Hilfe: Wie kann ich die Breite der Felder bei der Angabe eines Farbtonparameters beibehalten?

Ich werde meinen Code und Ergebnisse unter zeigen:

Meine Datenrahmen:

Out[3]: 
        timestamp room_number floor  floor_room temperature 
0 2016-01-19 09:00:00-05:00   11a06 11   11_11a06   23.0 
1 2016-01-19 09:00:00-05:00 east-inner 11 11_east-inner   22.8 
2 2016-01-19 09:00:00-05:00 east-window 11 11_east-window   22.9 

Verwendung von Seaborn mit ungeraden boxplot Breiten, eine Gruppierungsfaktors:

sns.boxplot(x=xunit, y=var, data=df, order=order, hue='floor') 

enter image description here

Verwendung von Seaborn, die eine angemessene Boxplot Breite, aber keine gr hat ouping Faktor:

sns.boxplot(x=xunit, y=var, data=df) 

enter image description here

+0

Es gibt eine Antwort in den Kommentaren der Frage, die Sie verknüpfen. – mwaskom

+0

Ah, vielen Dank, dass du mich zurückgemeldet hast - ich habe die wichtigsten Kommentare verpasst, als ich die Kommentarliste nicht erweitert habe! –

+0

sollten Sie eine Antwort posten, wenn Sie das Problem lösen, unabhängig davon, ob Sie die Frage vielleicht selbst gestellt haben. – jrjc

Antwort

3

Es stellt sich heraus, das die 'Farbton' Parameter das Problem verursacht (ich bin nicht sicher, warum). Durch das Entfernen dieses Parameters/Arguments aus der Funktion verschwindet das Problem, aber Sie müssen zusätzliche Informationen bereitstellen, damit die Boxplots nach der gewünschten Bedingung farbcodiert werden. Die folgende Codezeile fixiert mein Problem:

sns.boxplot(x=xunit, y=var, data=df, order=order,palette=df[condition_column].map(palette_dir)) 

Wo palette_dir ist ein Wörterbuch der Farben für jede Bedingung, auf eine Säule von Daten abgebildet.

Die Boxplots sehen jetzt normal aus, aber ich habe Mühe, eine Figurenlegende hinzuzufügen. Ich hoffe, dass die Person, die diese in this post aufgelöst hat, mich auf ihre Methode hinweisen kann.