绘制带误差分析的柱状图

news/2024/11/16 10:27:57/文章来源:https://www.cnblogs.com/DavidShang/p/18290135

1.检查原始数据

原始数据展示如下:

工况 工况1 工况2 工况3 工况4 工况5
M 89.37 86.05 92.95 87.44 73.56
DF-1 87.45 80.98 89.68 84.43 73.46
DF-2 86.00 81.54 89.68 84.43 73.46
UP 85.30 85.23 87.59 86.64 64.32
△DF-1 1.91 5.07 3.26 3.00 /
△DF-2 3.37 4.51 3.26 3.00 /
△UP 4.06 0.82 5.36 0.79 /

2.导入数据库

import pandas as pd 
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif']=['SimHei']   # 用来正常显示中文标签显示错误代码
plt.rcParams['axes.unicode_minus']=False     # 显示负号

小提示:
pandas为python提供了高效的数据处理、数据清洗与整理的工具;
matplotlib是利用python实现的绘图套件;
numpy是一个运行速度非常快的数学库,可以对从数据库中检索出的数据进行高效的数值计算和分析。

3.导入文件数据

path=r'文件路径\数据.xlsx'
data=pd.read_excel(path,sheet_name='python数据',index_col=0).T 
data

输出结果展示:

工况MDF-1DF-2UP△DF-1△DF-2△UP
工况189.36559987.45155685.99686185.3027681.9140433.3687384.062831
工况286.04668480.97511981.53683185.2309235.0715654.5098530.815761
工况392.94741689.68499789.68499787.5905653.2624193.2624195.356852
工况487.43542384.43208284.43208286.6409723.0033413.0033410.794451
工况573.55785073.46497473.46497464.3157330.0010000.0010000.001000

发现没有这里输出的数据表格和原始数据做了转置,并且△DF-1,△DF-2和△UP的工况5数据发生了变化,解释一下:
1.数据展示代码中对原始数据表格做了转置,这里为了展示该功能,实际操作中要灵活处理;
2.原始数据中的“/”会报错,而且不能有空值,可以将0数据设置成0.0001这种无限小的数字。

4.绘图

width = 0.2   #设置柱子的宽度
labels=['工况1', '工况2', '工况3', '工况4', '工况5'] #设置x轴标签#设置柱子的数据与误差线的数据,此处注意:不能有空值,否则报错,可以将0数据设置成0.0001这种无限小的数字
x=np.arange(len(labels)) 
bar1=data['M'].tolist()
bar1_err=[0,0,0,0,0]
bar2=data['DF-1'].tolist()
bar2_err=data['△DF-1'].tolist()
bar3=data['DF-2'].tolist()
bar3_err=data['△DF-2'].tolist()
bar4=data['UP'].tolist()
bar4_err=data['△UP'].tolist()#绘图
fig,ax=plt.subplots()
p1=ax.bar(x-0.3, bar1, width,color='royalblue',yerr=bar1_err,alpha=0.5,label='M')
p2=ax.bar(x-0.1, bar2, width,color='grey',yerr=bar2_err,alpha=0.3,label='DF-1')
p3=ax.bar(x+0.1, bar3, width,color='royalblue',yerr=bar3_err,alpha=0.9,label='DF-2')
p4=ax.bar(x+0.3, bar4, width,color='grey', yerr=bar4_err,alpha=0.6, label='UP')
ax.set_xticks(x)   #此处设置的x刻度个数与xlabel要一致,否则会报错
ax.set_xticklabels(labels)
ax.set_ylabel('声压级(dBA)',fontsize=10)
ax.tick_params(labelsize=10)
ax.legend(fontsize=10)
ax.axis([-0.5,4.5,50,100]) #设置x轴的显示范围
#ax.set_title('测试结果对比',fontsize=30)#设置柱子的标签
k=[p1,p2,p3,p4]
for p in k:for i in range(0,len(p)):a=p[i].get_x()+p[i].get_width()/2  #设置标签的x坐标,此处为x位置+柱子的1/2宽度b=p[i].get_height()  #获取柱子的高度,设置标签的时候按照柱子高度比例来ax.text(a,0.87*b,'{}'.format(int(round(b,0))),alpha=0.9,fontsize=9,ha='center',va='bottom')#利用zip组合来设置误差的标签,此处设置误差标签时将不想显示的设置为空值
bar2_err[4]=np.nan  
for t,q,w in zip(x-0.1,bar2,bar2_err): ax.text(t,q+w*1.1,'%.1f'%w,alpha=0.9,ha='center',va='bottom',fontsize=9)bar3_err[4]=np.nan
for t,q,w in zip(x+0.1,bar3,bar3_err):  ax.text(t,q+w*1.1,'%.1f'%w,alpha=0.9,ha='center',va='bottom',fontsize=9) bar4_err[4]=np.nan
for t,q,w in zip(x+0.3,bar4,bar4_err):  ax.text(t,q+w*1.1,'%.1f'%w,alpha=0.9,ha='center',va='bottom',fontsize=9)    

输出结果展示:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/742125.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

3SRB5016-ASEMI逆变箱专用3SRB5016

3SRB5016-ASEMI逆变箱专用3SRB5016编辑:ll 3SRB5016-ASEMI逆变箱专用3SRB5016 型号:3SRB5016 品牌:ASEMI 封装:SGBJ-5 批号:2024+ 现货:50000+ 最大重复峰值反向电压:1600V 最大正向平均整流电流(Vdss):50A 功率(Pd):大功率 芯片个数:5 引脚数量:5 类型:整流扁桥、…

vue3 smooth-signature 带笔锋手写签名

mini-smooth-signature 小程序版带笔锋手写签名,支持多平台小程序使用 参考:GitHub - linjc/smooth-signature: H5带笔锋手写签名,支持PC端和移动端,任何前端框架均可使用 一、安装npm install smooth-signature # 或 yarn add smooth-signature或通过<script>引用,…

服务器断电后无法开机

当服务器断电后无法开机,‌可能的原因和解决方法包括:‌ .电源和断路器检查:‌首先应检查服务器的电源系统和断路器是否正常工作,‌确保有足够的电力供应。‌建议保存备份电源以避免断电造成的损害和损失。‌ .电源开关检查:‌确认服务器的电源开关处于正常位置。‌如果电…

在linux服务器上搭建slurm集群部署

在Linux服务器上搭建Slurm集群部署是一个涉及多个步骤和组件配置的过程。Slurm是一个面向Linux和Unix的开源作业调度程序,广泛用于高性能计算环境。 一、环境准备 选择服务器和硬件设备: 选择合适的服务器和硬件设备,建议选用多核心、大内存、高速硬盘的服务器以满足高性能计…

MeterSphere使用指南

一、简介 MeterSphere是一站式开源持续测试平台,涵盖测试跟踪、接口测试、性能测试、团队协作等功能,兼容JMeter 等开源标准,有效助力开发和测试团队充分利用云弹性进行高度可扩展的自动化测试,加速高质量软件的交付。 https://github.com/metersphere产品优势 开源:基于开…

pwnable.tw | 第2题orw

pwnable.tw第2题orw### 前言 pwnable.tw第二题 分析 IDA打开,发现是直接读入shellcode后执行orw_seccomp显然是限制了shellcode进行系统调用seccomp-tools查看到open\read\write这些系统调用没被禁用 利用 # -*- coding: utf-8 -*- from pwn import *io = remote("chall.…

pwnable.tw | 第二题orw

pwnable.tw之第二题orw### 前言 pwnable.tw第二题 分析 IDA打开,发现是直接读入shellcode后执行orw_seccomp显然是限制了shellcode进行系统调用seccomp-tools查看到open\read\write这些系统调用没被禁用 利用 # -*- coding: utf-8 -*- from pwn import *io = remote("cha…

Docker 因端口映射不一致出现的问题

问题描述 因为服务器原先已经安装了nginx(非容器安装),并且占用80端口; 而我方习惯使用容器进行安装应用,故用安装了一个容器ngixn; docker-compose.yml version: 3 services:nginx:restart: alwayscontainer_name: nginximage: nginxports:- 81:80- 443:443volumes:- /dat…

最开始学java时写的文档

最开始学java时写的的文档一,java基础 1.常用cmd窗口操作 E: 切换到e盘 dir 查看当前路径下的内容 cd 目录 进入单级目录 cd.. 退回到上一级目录 cd 目录1\目录2\ 进入多级目录 cls清屏但不会退出当前目录 exit关闭cmd窗口 想要在任意目录下都可以打开指定软件可以把软…

探索大模型:袋鼠云在 Text To SQL 上的实践与优化

Text To SQL 指的是将自然语言转化为能够在关系型数据库中执行的结构化查询语言(简称 SQL)。近年来,伴随人工智能大模型技术的不断进步,Text To SQL 任务的成功率显著提升,这得益于大模型的推理、理解以及指令遵循等能力。 对于大数据平台来说,集成 Text To SQL 功能意义…

jdk离线安装包下载

下载 华为云 https://repo.huaweicloud.com/java/jdk/ 小站点(比较全) https://www.injdk.cn/ 华为云,比较老旧小站点,推荐安装 rpm - *.rpm