2016-07-29 11 views
12

Jak mogę oznaczyć każdy boxplot na powierzchni seaborn z wartością średnią?Etykietowanie boxplot u seaborn o wartości medianowej

E.g.

import seaborn as sns 
sns.set_style("whitegrid") 
tips = sns.load_dataset("tips") 
ax = sns.boxplot(x="day", y="total_bill", data=tips) 

Jak oznaczyć każdy boxplot wartością średnią lub średnią?

Odpowiedz

10

Czy mogę po prostu powiedzieć, że uwielbiam, gdy ludzie zawierają przykładowe zestawy danych. Zdrowe +1 do Ciebie!

import seaborn as sns, numpy as np 

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

medians = tips.groupby(['day'])['total_bill'].median().values 
median_labels = [str(np.round(s, 2)) for s in medians] 

pos = range(len(medians)) 
for tick,label in zip(pos,ax.get_xticklabels()): 
    ax.text(pos[tick], medians[tick] + 0.5, median_labels[tick], 
      horizontalalignment='center', size='x-small', color='w', weight='semibold') 

enter image description here

+0

dzięki za odpowiedź greant Berniego! – user308827

+1

Pozdrawiam, kolego. Szczęśliwe kodowanie do ciebie! – bernie

+1

Należy zauważyć, że efekt 0,5 po medianie [tick] jest wrażliwy na skalę danych. W mojej małej skali przesunął biały tekst na białe tło i zajęło mi trochę czasu, aby dowiedzieć się, dlaczego się nie wyświetla. Skaluj 0,5 w razie potrzeby. –