画带有误差线的二分类数据的条形图


import numpy as np
a=np.linspace(1,10,5)   #从1到10等间隔选5个数
print(b=np.mean(a))
print(np.average(a,weights=[1,2,3,1,2]))  #average可以在求均值的时候赋予权重

np.var(a)   #总体方差
b=[[4,5],[6,7]]
np.var(b)  #求矩阵所有加起来的标准差
np.std(a)   #标准差




画带有误差线的分类条形图

import numpy as np
import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties   #需要汉字的时候,导入该库

plt.figure(figsize=(10,6))
data= pd.read_excel('C:\\Users\\MAIBENBEN\\Desktop\\糖尿病.xls')
data1=data[data.Outcome==1]
data0=data[data.Outcome==0]
pr1_mean=np.mean(data1['Pregnancies'])
pr1_std=np.std(data1['Pregnancies'])
pr0_mean=np.mean(data0['Pregnancies'])
pr0_std=np.std(data0['Pregnancies'])
Glu1_mean=np.mean(data1['Glucose'])
Glu1_std=np.std(data1['Glucose'])
Glu0_mean=np.mean(data0['Glucose'])
Glu0_std=np.std(data0['Glucose'])
Blo1_mean=np.mean(data1['BloodPressure'])
Blo1_std=np.std(data1['BloodPressure'])
Blo0_mean=np.mean(data0['BloodPressure'])
Blo0_std=np.std(data0['BloodPressure'])
BMI1_mean=np.mean(data1['BMI'])
BMI1_std=np.std(data1['BMI'])
BMI0_mean=np.mean(data0['BMI'])
BMI0_std=np.std(data0['BMI'])
Dia1_mean=np.mean(data1['DiabetesPedigreeFunction'])
Dia1_std=np.std(data1['DiabetesPedigreeFunction'])
Dia0_mean=np.mean(data0['DiabetesPedigreeFunction'])
Dia0_std=np.std(data0['DiabetesPedigreeFunction'])
Age1_mean=np.mean(data1['Age'])
Age1_std=np.std(data1['Age'])
Age0_mean=np.mean(data0['Age'])
Age0_std=np.std(data0['Age'])
#上面应该有更好的求二分类各类别标准差和均值的方法,暂未发现
y1=[pr1_mean,Glu1_mean,Blo1_mean,BMI1_mean,Dia1_mean,Age1_mean]
y0=[pr0_mean,Glu0_mean,Blo0_mean,BMI0_mean,Dia0_mean,Age0_mean]
stdy1=[pr1_std,Glu1_std,Blo1_std,BMI1_std,Dia1_std,Age1_std]
stdy0=[pr0_std,Glu0_std,Blo0_std,BMI0_std,Dia0_std,Age0_std]
x=np.arange(6)
error_attri={'elinewidth':2,'ecolor':'blace','capsize':6}
bar_width=0.4
tick_label=['Pregnancies','Glucose','BloodPressure','BMI','DiabetesPedigreeFunction','Age']
plt.bar(x,y1,bar_widtj,color='#87cee3',align='center',yerr=stdy1,
error_kw=error_attri,
#error_kw是设计误差棒具体细节的属性
label='Diabetes',
alpha=1
)
plt.bar(x+bar_width,y0,
#若没有向右侧增加一个bar——width的话,第一个柱体会被遮挡住
bar_width,
color="#cd5c5c",
yerr=stdy0,
error_kw=error_attri,
label='No diabetes'
,alpha=1
)
#创建辅助标签
plt.xlabel('Physical examination index')
plt.ylabel('')
plt.xticks(x+bar_width/2,tick_label)
#xticks在py2中与3不是完全相同,tick_label用列表对名称进行了设计,此处设计其他属性
plt.title('Summary of physical examination indicators')
plt.grid(axis='y',ls="-",color='purple',alpha=0.7)
plt.legend()
plt.show()

最终效果图:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值