2016-03-30 3 views
6

Ich seaborn.boxplot grob Aufruf wie folgt:eine Farbe zu einem bestimmten Feld in seaborn.boxplot zuweisen

seaborn.boxplot(ax=ax1, 
        x="centrality", y="score", hue="model", data=data], 
        palette=seaborn.color_palette("husl", len(models) +1), 
        showfliers=False, 
        hue_order=order, 
        linewidth=1.5) 
Ist es möglich, ein Feld heraus stehen zu lassen, indem sie eine bestimmte Farbe zu geben, während Färbung alle anderen mit der angegebenen Farbpalette?

enter image description here

+1

Können Sie ein minimales, vollständig und überprüfbar Beispiel nennen? – Chiel

+0

@Chiel die seaborn.boxplot docs bieten ein minimales Beispiel für Sie mit zu spielen: http://web.stanford.edu/~mwaskom/software/seaborn/generated/seaborn.boxplot.html – clstaudt

Antwort

15

Die Boxen gemacht sns.boxplot wirklich Objekte nur matplotlib.patches.PathPatch verwenden. Diese sind in ax.artists als Liste gespeichert.

So können wir eine Box insbesondere durch Indizierung ax.artists auswählen. Dann können Sie die facecolor, edgecolor und linewidth unter vielen anderen Eigenschaften festlegen.

Zum Beispiel (basierend auf einem der Beispiele here):

import seaborn as sns 
import matplotlib.pyplot as plt 

sns.set_style("whitegrid") 
tips = sns.load_dataset("tips") 
ax = sns.boxplot(x="day", y="total_bill", hue="smoker", 
       data=tips, palette="Set3") 

# Select which box you want to change  
mybox = ax.artists[2] 

# Change the appearance of that box 
mybox.set_facecolor('red') 
mybox.set_edgecolor('black') 
mybox.set_linewidth(3) 

plt.show() 

enter image description here