Отображение среднего значения и значений отклонения на сгруппированном блокпосте в Python - PullRequest
1 голос
/ 07 октября 2019

Я хочу отобразить средние значения и значения стандартного отклонения над каждым из блоков в сгруппированном блоке (см. Рисунок). grouped plot

Мой код

import pandas as pd
import seaborn as sns
from os.path import expanduser as ospath

df = pd.read_excel(ospath('~/Documents/Python/Kandidatspeciale/TestData.xlsx'),'Ark1')

bp = sns.boxplot(y='throw angle', x='incident angle', 
                 data=df, 
                 palette="colorblind",
                 hue='Bat type')

bp.set_title('Rubber Comparison',fontsize=15,fontweight='bold', y=1.06)
bp.set_ylabel('Throw Angle [degrees]',fontsize=11.5)
bp.set_xlabel('Incident Angle [degrees]',fontsize=11.5)

Где мой фрейм данных, df,

    Bat type  incident angle  throw angle
0      euro              15         28.2
1      euro              15         27.5
2      euro              15         26.2
3      euro              15         27.7
4      euro              15         26.4
5      euro              15         29.0
6      euro              30         12.5
7      euro              30         14.7
8      euro              30         10.2
9     china              15         29.9
10    china              15         31.1
11    china              15         24.9
12    china              15         27.5
13    china              15         31.2
14    china              15         24.4
15    china              30          9.7
16    china              30          9.1
17    china              30          9.5

Я пытался использовать следующий код. Он должен быть независим от числа x (углов падения), например, он должен выполнять работу для большего угла 45, 60 и т. Д.

m=df.mean(axis=0) #Mean values 
st=df.std(axis=0) #Standard deviation values 

for i, line in enumerate(bp['medians']):
    x, y = line.get_xydata()[1]
    text = ' μ={:.2f}\n σ={:.2f}'.format(m[i], st[i])
    bp.annotate(text, xy=(x, y))

Может кто-нибудь помочь?

...