matplotlib之pyplot模块之柱状图(bar():基础参数、外观参数)_plt.bar_mighty13的博客-CSDN博客
bar()的基础参数如下:
x:柱子在x轴上的坐标。浮点数或类数组结构。注意x可以为字符串数组! height:柱子的高度,即y轴上的坐标。浮点数或类数组结构。 width:柱子的宽度。浮点数或类数组结构。默认值为0.8。 bottom:柱子的基准高度。浮点数或类数组结构。默认值为0。 align:柱子在x轴上的对齐方式。字符串,取值范围为{'center', 'edge'},默认为'center'。 'center':x位于柱子的中心位置。 'edge':x位于柱子的左侧。如果想让x位于柱子右侧,需要同时设置负width 以及align='edge'。
MODELsAUCAUC(error误差)M10.8562674730.042804689M20.903370090.04444241M30.9305753810.043041211 import matplotlib.pyplot as pltimport numpy as npimport pandas as pdplt.rcParams['font.sans-serif'] = ['STKaiTi'] # 用来正常显示中文标签plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号data1 = pd.read_excel('C:\\Users\\ASUS\\Desktop\\data.xlsx', sheet_name='MOUSE') # AUCdata2 = pd.read_excel('C:\\Users\\ASUS\\Desktop\\data.xlsx', sheet_name='humanSTD') # AUC(误差)# 数据data = data1['AUC']errors = data2['AUC']labels = ['M1', 'M2', 'M3']# 创建一个颜色列表,包含每个柱子对应的颜色colors = ['skyblue', 'lightgreen', 'orange']# 计算柱子的宽度,使它们没有间隙bar_width = 1# 创建直方图,并设置颜色plt.figure(dpi=300)plt.title('不同模型的AUC值')# 绘制柱状图,并为每个数据系列设置标签for i in range(len(data)):plt.bar(labels[i], data[i], yerr=errors[i], capsize=5, width=bar_width, color=colors[i], label=f'M{i + 1}')# 添加数据标签for i in range(len(data)):plt.text(labels[i], data[i] + 0.05, f'{data[i]:.3f}', ha='center')# 添加标签和标题plt.xlabel('模型')plt.ylabel('AUC')# 添加图例plt.legend()# 绘制散点图for i in range(len(data)):plt.scatter(labels[i], data[i], c="black", zorder=2)# 取出上边框和右边框ax = plt.gca()ax.spines['right'].set_visible(False)ax.spines['top'].set_visible(False)# 显示图形plt.show()
要求:1.画出三个模型的AUC柱状图 2.每个柱子上要有数据标签 3.每个柱子上要有代表误差的误差条 4.要取出表格的上边框和右边框 5.在柱状图中间画一个点
如果需要加上legend图例,由于我们是直接用plt.bar()画出3个柱子,所以无法加上图例。所以我们需要借助for循环依次画上柱子并打上标签
# 绘制柱状图,并为每个数据系列设置标签 for i in range(len(data)): plt.bar(labels[i], data[i], yerr=errors[i], capsize=5, width=bar_width, color=colors[i], label=f'M{i + 1}')
import matplotlib.pyplot as pltimport numpy as npimport pandas as pdplt.rcParams['font.sans-serif'] = ['STKaiTi'] # 用来正常显示中文标签plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号data1 = pd.read_excel('C:\\Users\\ASUS\\Desktop\\data.xlsx', sheet_name='MOUSE')data2 = pd.read_excel('C:\\Users\\ASUS\\Desktop\\data.xlsx', sheet_name='humanSTD')# 数据data = data1['AUC']errors = data2['AUC']labels = ['M1', 'M2', 'M3']# 创建一个颜色列表,包含每个柱子对应的颜色colors = ['skyblue', 'lightgreen', 'orange']# 计算柱子的宽度,使它们没有间隙bar_width = 1# 创建直方图,并设置颜色plt.figure(dpi=300)plt.title('不同模型的AUC值')# 绘制柱状图,并为每个数据系列设置标签for i in range(len(data)):plt.bar(labels[i], data[i], yerr=errors[i], capsize=5, width=bar_width, color=colors[i], label=f'M{i + 1}')# 添加数据标签for i in range(len(data)):plt.text(labels[i], data[i] + 0.05, f'{data[i]:.3f}', ha='center')# 添加标签和标题plt.xlabel('模型')plt.ylabel('AUC')# 添加图例plt.legend()# 绘制散点图for i in range(len(data)):plt.scatter(labels[i], data[i], c="black", zorder=2)# 取出上边框和右边框ax = plt.gca()ax.spines['right'].set_visible(False)ax.spines['top'].set_visible(False)# 显示图形plt.show() 多类别柱状图 饼图 import matplotlib.pyplot as pltplt.rcParams['font.sans-serif']=['STKaiTi'] #用来正常显示中文标签plt.rcParams['axes.unicode_minus']=False #用来正常显示负号plt.figure(num = 1,figsize = (10,10),dpi=200) # 设置画布plt.title("饼图") # 设置画布标题plt.pie(x = [20,30,10,50], # 数据explode = (0,0.05,0,0) , # 指定饼图某些部分的突出显示,即呈现爆炸式labels = ['A','B','C','D'], # 添加标签colors = ['yellowgreen','gold','skyblue','coral'], #自定义颜色shadow = True, # 阴影autopct='%.2f%%', #设置百分比的格式,这里保留两位小数pctdistance=0.8, #设置百分比标签与圆心的距离labeldistance=0.5, #设置标签与圆心的距离startangle=180, #设置饼图的初始角度radius=0.8, #设置饼图的半径counterclock=False, #是否逆时针,这里设置为顺时针方向wedgeprops={'linewidth':1.5, 'edgecolor':'green'}, #设置饼图内外边界的属性值textprops={'fontsize':15, 'color':'black'} #设置文本标签的属性值)plt.show()