Как отобразить числовые средние и стандартные значения рядом с диаграммой в серии диаграмм? - PullRequest
0 голосов
/ 23 сентября 2019

Я пытаюсь отобразить значение среднего значения и стандартного отклонения рядом со своими диаграммами в виде ячеек на графике из нескольких диаграмм в виде ящиков.Ничего не отображается, когда я пытаюсь.

#Boxplot 3

data3 =np.array([[ 4.38,  3.27,  6.07],
   [ 4.35,  3.51,  6.14],
   [ 4.09,  3.33,  5.92],
   [ 4.9 ,  3.97,  5.02],
   [ 4.56,  3.5 ,  4.5 ],
   [ 4.78,  3.95,  4.58]])

fig3 = plt.figure(3)

ax3 = fig3.add_subplot(111)
ax3.boxplot(data3, showmeans=True)

ax3.set_title('Serve - Data Location and Variance 1',fontsize=15,fontweight='bold', y=1.06)
ax3.set_ylabel('Velocity [m/s]',fontsize=11.5)
ax3.set_xlabel('Parameter',fontsize=11.5)
ax3.set_xticklabels(['V_in', 'V_out', 'V_bat'],style='italic')
ax3.get_xaxis().tick_bottom()
ax3.get_yaxis().tick_left()


m1=data3.mean(axis=0) #Mean values 
mL1 = [str(np.round(s, 2)) for s in m1]

st1=data3.std(axis=0) #Standard deviation values 
sT1=[str(np.round(s, 2)) for s in st1]

ind=0
for i in range (len(ax3.get_xticklabels())):
ax3.text(i, m1[ind]+1, mL1[ind], horizontalalignment='center',  color='w', weight='semibold')
ind+=1

Последние четыре строки необходимо исправить, так как другой код работает нормально (см. Рисунок) enter image description here

1 Ответ

1 голос
/ 23 сентября 2019

Метод boxplot возвращает словарь, который включает части коробочного графика (усы, колпачки, коробки, медианы, листовки, средние значения).Вы можете использовать их для добавления аннотаций в различных местах на графике.Ниже я добавил средние значения и значения стандартного отклонения справа от средней линии:

Прочтите это для получения более подробной информации Наложение числового значения медианы / дисперсии на коробочные диаграммы

m1 = data3.mean(axis=0)
st1 = data3.std(axis=0)

fig, ax = plt.subplots()
bp = ax.boxplot(data3, showmeans=True)

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

какие участки

enter image description here

...