【python】可视化

柱状图

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 |

python 复制代码
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

plt.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}')

python 复制代码
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

plt.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()

多类别柱状图

饼图

python 复制代码
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()
相关推荐
安迪小宝26 分钟前
16 celery集成其他工具
数据库·python·sqlite·celery
成都犀牛37 分钟前
工作流和Agent 的区别与联系
人工智能·python·深度学习·神经网络·agent·工作流
寄思~1 小时前
Python学习笔记:错误和异常处理
开发语言·笔记·python·学习
clmm1231 小时前
Java动态生成Nginx服务配置
java·开发语言·nginx
是紫焅呢1 小时前
O数据可视化基础.py
python·青少年编程·信息可视化·数据分析·学习方法·数据可视化·visual studio code
lzb_kkk1 小时前
【MFC】编辑框、下拉框、列表控件
c语言·开发语言·c++·mfc·1024程序员节
繢鴻1 小时前
Python环境搭建
开发语言·python
飞鸟malred2 小时前
go语言快速入门
开发语言·后端·golang
十年砍柴---小火苗2 小时前
golang中new和make的区别
开发语言·后端·golang
测试开发-学习笔记2 小时前
go mode tidy出现报错go: warning: “all“ matched no packages
开发语言·后端·golang