2016-03-30 13 views
6

Dzwonię seaborn.boxplot grubsza następująco:przypisać kolor do konkretnej skrzynki w seaborn.boxplot

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) 

Czy to możliwe, aby jeden box wyróżniać nadając mu specyficzny kolor, natomiast kolorystyka wszystkie inne z podaną paletą kolorów?

enter image description here

+1

można zapewnić minimalną, kompletną i zweryfikowania przykład? – Chiel

+0

@Chiel the seaborn.boxplot docs zapewniają minimalny przykład gry: http://web.stanford.edu/~mwaskom/software/seaborn/generated/seaborn.boxplot.html – clstaudt

Odpowiedz

15

Skrzynki wykonane przy użyciu sns.boxplot są naprawdę matplotlib.patches.PathPatch obiekty. Są one przechowywane jako lista w ax.artists.

Możemy więc wybrać jedno pudełko w szczególności, indeksując ax.artists. Następnie można ustawić facecolor, edgecolor i linewidth, spośród wielu innych właściwości.

Na przykład (w oparciu o jeden z przykładów 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