python绘制特殊的柱状图

我在使用python绘图时,想要这样绘图:每个组的所有数据放到一起,然后不同组进行比较。

类似这样的图。

然后 我搞了挺长时间,搞了一个类似的图,需要计算每个柱子的位置。

gpt提示词可以这样写:

把所有颜色相同的柱子放在一起。每个套件的柱放在一起,并且中间没有间隙。不同套件的柱子之间有间隙。请你使用python画图。(定义宽度,并把每个柱子放在合适的位置)。

然后该柱子宽度,高度,颜色。可以制作出类似的图。

代码如下:

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np# 提供的数据
data = {"Suite": ["FP_rate"] * 13 + ["FP_speed"] * 10 + ["Int_rate"] * 10 + ["Int_speed"] * 10,"Fitting Time": [0.9217, 0.8048, 0.7858, 0.8889, 0.7595, 0.7906, 0.7962, 0.7631, 0.7737, 0.8022, 0.7901, 0.8909,0.9123,0.6051, 0.5374, 0.5738, 0.5725, 0.5567, 0.5768, 0.5345, 0.5276, 0.5917, 0.5639,0.7211, 0.6849, 0.6662, 0.6629, 0.6621, 0.6723, 0.6752, 0.6849, 0.6950, 0.6580,0.5896, 0.6512, 0.6412, 0.5862, 0.6272, 0.6005, 0.6045, 0.6392, 0.6163, 0.5715],"MAE": [8.7349, 5.2842, 3.6923, 2.9271, 5.3044, 2.0670, 4.1021, 5.6323, 5.4719, 12.4079, 7.0451, 2.8996, 2.1564,8.8819, 2.8309, 1.7067, 2.4580, 2.3036, 1.4780, 3.6271, 4.7245, 1.4008, 6.2279,2.6752, 3.6861, 4.5846, 2.7546, 4.2150, 6.6735, 2.6371, 2.6476, 7.7664, 2.5001,0.0334, 0.0904, 0.0952, 0.1381, 0.0767, 0.0816, 0.0281, 0.0152, 0.0776, 0.2814],"Prediction Time": [0.0130, 0.0132, 0.0147, 0.0128, 0.0128, 0.0132, 0.0127, 0.0128, 0.0129, 0.0176, 0.0169, 0.0253,0.0155,0.0134, 0.0130, 0.0219, 0.0123, 0.0117, 0.0134, 0.0115, 0.0121, 0.0124, 0.0114,0.0141, 0.0163, 0.0133, 0.0136, 0.0132, 0.0152, 0.0135, 0.0158, 0.0151, 0.0234,0.0125, 0.0130, 0.0119, 0.0145, 0.0127, 0.0120, 0.0118, 0.0152, 0.0116, 0.0142]
}# 创建DataFrame
df = pd.DataFrame(data)# 总宽度分配给每组的部分
total_width_per_group = 1.0# 单个柱子的宽度(考虑到每个套件内部留有小间隙)
individual_bar_width = total_width_per_group / (len(df['Suite'].unique()) * len(df) // len(df['Suite'].unique())) * 0.93# 每个套件组内部的间隙宽度
internal_gap = 0.07 * individual_bar_width# 每个套件组的总宽度
group_total_width = 0.05+(len(df) // len(df['Suite'].unique())) * individual_bar_width + ((len(df) // len(df['Suite'].unique())) - 1) * internal_gap# 计算每个套件的基准位置
num_groups = len(df['Suite'].unique())
group_base_positions = np.linspace(0, num_groups - 1, num_groups) * (group_total_width + 1.5 * individual_bar_width)# 绘制图表
fig, axes = plt.subplots(1, 3, figsize=(30, 3), dpi=100)# Colors for different suites
colors = {'FP_rate': '#FDA629', 'FP_speed': '#CA446A', 'Int_rate': '#05C5A8', 'Int_speed': '#8A7093'}for ax, metric in zip(axes, ['Fitting Time', 'MAE', 'Prediction Time']):for suite_index, suite in enumerate(sorted(df['Suite'].unique())):# 获取当前套件的数据suite_data = df[df['Suite'] == suite].reset_index()for bar_index in range(len(suite_data)):# 计算每个柱子的位置bar_position = group_base_positions[suite_index] + bar_index * (individual_bar_width + internal_gap)# 绘制柱子ax.bar(bar_position, suite_data.loc[bar_index, metric], color=colors[suite], width=individual_bar_width)ax.set_title(metric)# 设置X轴刻度标签
for ax in axes:ax.set_xticks(group_base_positions + group_total_width / 2 - individual_bar_width / 2)ax.set_xticklabels(sorted(df['Suite'].unique()))plt.tight_layout()
plt.show()

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

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

相关文章

【MCAL】TC397+EB-tresos之CAN配置实战 - (CAN/CANFD)

本篇文章介绍了在TC397平台使用EB-tresos对CAN驱动模块进行配置的实战过程,不仅介绍了标准CAN的发送与接收,还介绍了CANFD的实现与调试以及扩展帧的使用。M_CAN是德国博世公司开发的IP,因为英飞凌的芯片完整的集成了这个IP,所以整体的配置都比…

4.关联式容器

关联式container STL中一些常见的容器: 序列式容器(Sequence Containers): vector(动态数组): 动态数组,支持随机访问和在尾部快速插入/删除。list(链表)&am…

【接口测试】常见HTTP面试题

目录 HTTP GET 和 POST 的区别 GET 和 POST 方法都是安全和幂等的吗 接口幂等实现方式 说说 post 请求的几种参数格式是什么样的? HTTP特性 HTTP(1.1) 的优点有哪些? HTTP(1.1) 的缺点有哪些&#x…

Nginx高级技巧:实现负载均衡和反向代理

文章目录 Nginx概述Nginx作用正向代理反向代理负载均衡动静分离 Nginx的安装 -->Docker3.1 安装Nginx3.2 Nginx的配置文件3.3 修改docker-compose文件 Nginx源码安装nginx常用命令nginx配置文件配置文件位置配置文件结构详情 Nginx的反向代理【重点】基于Nginx实现反向代理4…

会声会影2024中文官方网站https://wm.makeding.com/iclk/?zoneid=55677

会声会影2024在易用性方面做得非常出色,这也是它受到广大用户喜爱的一个重要原因。 首先,会声会影2024拥有直观的用户界面设计。软件的整体布局清晰明了,各个功能模块划分得十分合理。用户即使是第一次使用,也能够迅速找到所需的…

实战 | 使用YOLOv8图像分割实现路面坑洞检测(步骤 + 代码)

导 读 本文主要介绍使用YOLOv8图像分割实现路面坑洞检测(步骤 代码)。 背 景 如上图所示,现实生活中路面坑洞对车辆和驾驶员安全来说存在巨大隐患,本文将介绍如何使用YoloV8图像分割技术来检测路面坑洞,从而提示驾…

【大数据Hive】hive 多字段分隔符使用详解

目录 一、前言 二、hive默认分隔符规则以及限制 2.1 正常示例:单字节分隔符数据加载示例 2.2 特殊格式的文本数据,分隔符为特殊字符 2.2.1 文本数据的字段中包含了分隔符 三、突破默认限制规则约束 3.1 数据加载不匹配情况 1 3.2 数据加载不匹配…

理解python3中的回调函数

百度百科说:回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用&#…

ctf_show笔记篇(web入门---php特性)

目录 php特性 89:直接数组绕过preg_match当遇到数组时会直接报错输出0 90:这里利用了intval的特性 91:这里需要细节一点 92-93:这两题的方法很多可以发散思维 94:还是利用小数绕过例如4476.0 95:这里…

【ArcGIS】统计格网中不同土地利用类型占比

基于ArcGIS统计格网中不同土地利用类型占比 数据准备ArcGIS操作步骤1、创建渔网(Create Fishnet)2、建立唯一标识3、选择格网4、提取不同类别土地利用类型5、各类用地面积计算 参考另:可能出现的问题总结Q1:ArcGIS获取唯一值&…

7.1.1 selenium介绍及安装chromedriver

目录 1. Selenium的用途 2. 安装Selenium库 3. 安装chromedriver 1. 查看谷歌版本号​编辑 2. 找到最新版本及下载 3. 配置环境变量 4. 检测是否配置成功 5. 用python初始化浏览器对象检测: 6. 参考链接 1. Selenium的用途 在前面我们提到:在我…

端智能:面向手机计算环境的端云协同AI技术创新

近年来,随着移动端设备软硬件能力的进步,移动端的算力有了很大提升,同时面向移动端的机器学习框架和模型轻量化技术越来越成熟,端上的AI能力逐渐进入大众视野,端智能在电商领域也开始逐步走向规模化应用。通过持续探索…

Leetcoder Day36| 动态规划part03

343. 整数拆分 给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最大乘积。 示例 1: 输入: 2输出: 1解释: 2 1 1, 1 1 1。 示例 2: 输入: 10输出: 36解释: 10 3 3 4, 3 3 4 36。说明: 你可以假设 …

Day04:APP架构小程序H5+Vue语言Web封装原生开发Flutter

目录 常见APP开发架构 APP-开发架构-原生态-IDEA APP-开发架构-Web封装-平台 APP-开发架构-H5&Vue-HBuilderX WX小程序-开发架构-Web封装-平台 WX小程序-开发架构-H5&Vue-HBuilderX 思维导图 章节知识点: 应用架构:Web/APP/云应用/三方服…

ROS开发基础-Linux基础第四部(开发板设置本地IP)

一 、网线连接设备 使用网线连接jetson NX与机械臂,如下图所示: 二、 修改上位机IPV4 IP ①测试是否可连接。网线连接机械臂之后,在桌面打开终端输入命令“ping 192.168.1.18”,如不可正常通信,可按照下述步骤进行设置。 ②在U…

TypeScript08:在TS中使用模块化

前言:tsconfig.json中的配置 一、前端领域中的模块化标准 前端领域中的模块化标准有: ES6、commonjs、amd、umd、system、esnext 二、 TS中如何书写模块化语句 TS 中,导入和导出模块,统一使用 ES6 的模块化标准。 myModule.ts &a…

如何使用ArcGIS Pro创建最低成本路径

虽然两点之间直线最短,但是在实际运用中,还需要考虑地形、植被和土地利用类型等多种因素,需要加权计算最低成本路径,这里为大家介绍一下计算方法,希望能对你有所帮助。 数据来源 教程所使用的数据是从水经微图中下载…

社区店商业计划书撰写指南:让你的项目脱颖而出

对于想要开实体店或创业的朋友们,撰写一份完整而有说服力的商业计划书是迈向成功的重要一步。 作为一名开鲜奶吧5年的创业者,我将分享一些关键的要点和技巧,帮助你撰写一份出色的社区店商业计划书。 1、项目概述: 在计划书的开头…

Java | Java中与文件同名的类的构造函数的调用

在Java的学习过程中遇到了这样一段代码: public class Test1 {int a1;public static void main(String []args){System.out.println("java");}public Test1(){System.out.println("构造函数");} }它的运行结果是这样的,构造函数中的…

第 1 章 微信小程序与云开发从入门到实践从零开始做小程序——开发认识微信小程序

小北的参考工具书 小程序开发的图书并不少,这本书仍然值得你拥有! 首先,这是一本全栈小程序开发教程,循序渐进,由浅入深,介绍了小程序开发你想了解的方方面面,包括近其小程序开发的各种新技术应…