柱状图
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'。
MODELs | AUC | AUC(error误差) |
M1 | 0.856267473 | 0.042804689 |
M2 | 0.90337009 | 0.04444241 |
M3 | 0.930575381 | 0.043041211 |
import matplotlib.pyplot as plt
import numpy as np
import 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') # AUC
data2 = 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 plt
import numpy as np
import 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 plt
plt.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()