python-使用Qchart总结4-绘制多层柱状图
1、上代码
import sysfrom PyQt5.QtChart import QChart, QChartView, QBarCategoryAxis, QValueAxis, QBarSeries, QBarSet
from PyQt5.QtGui import QPainter, QColor
from PyQt5.QtWidgets import QMainWindow, QApplicationfrom untitled import Ui_MainWindow #从生成好的py文件内导入设计好的UI类class Window(QMainWindow, Ui_MainWindow):#这个是将图表与UI图连接起来def __init__(self):super().__init__()self.setup_ui() # 渲染画布def setup_ui(self):self.setupUi(self)self.plot_qchart = User_QBarSeries() #将图表实例化self.graphicsView.setChart(self.plot_qchart)self.graphicsView.setRenderHint(QPainter.Antialiasing) # 抗锯齿self.graphicsView.setRubberBand(QChartView.RectangleRubberBand)class User_QBarSeries(QChart): #绘制柱状图def __init__(self, parent=None, ):super(User_QBarSeries, self).__init__(parent)self.window = parent
#设置X轴self.axisX=QBarCategoryAxis() #设置x轴坐标,用来显示柱状图的类型
#给x轴添加轴上的点self.axisX.append("用户1")self.axisX.append("用户2")self.axisX.append("用户3")self.axisX.setLabelsColor(QColor(0, 200, 0))#设置X轴坐标的颜色,就是上面用户1、用户2、用户3的颜色
# 设置Y轴self.axisY=QValueAxis()#设置Y轴坐标,显示值类型的Y轴self.axisY.setRange(0,10)#设置Y轴的范围self.axisY.setTitleText("单位:克")#设置Y轴的名字self.axisY.setLabelFormat("%.2f")#设置Y轴上的点的显示格式self.QBarSeries = QBarSeries() #用来装很多柱状图的对象self.bar0 = QBarSet("苹果")#1种系列的柱状图self.bar0.setColor(QColor(200,20,150))#设置柱体的颜色self.bar0.setLabelColor(QColor(200,200,150))#设置柱体上面显示的数值的颜色self.bar0.append(3.23) #注意,上面有3个用户,对应的传3个值self.bar0.append(2.123)self.bar0.append(6.5)self.QBarSeries.append(self.bar0)#将self.bar0这个柱体添加到柱状图的对象(self.QBarSeries)上self.QBarSeries.setVisible(True)#将柱状图显示出来self.QBarSeries.setLabelsVisible(True)#将柱体对应的Y值也显示出来self.addSeries(self.QBarSeries)#将整个柱状图放到坐标图里面self.setAxisX(self.axisX, self.QBarSeries)#将整个柱状图的坐标与坐标轴对应self.setAxisY(self.axisY, self.QBarSeries)if __name__ == "__main__":app = QApplication(sys.argv)mywindow = Window()mywindow.show()sys.exit(app.exec_())
2.执行效果

3.画第二组柱状图,图中红框的代码复制,重命名self.bar0变量,更改柱体的名字,传入的值即可

上第二组柱体的代码
self.bar1 = QBarSet("香蕉") # 1种系列的柱状图
self.bar1.setColor(QColor(130, 120, 50)) # 设置柱体的颜色
self.bar1.setLabelColor(QColor(15, 100, 200)) # 设置柱体上面显示的数值的颜色
self.bar1.append(5) # 注意,上面有3个用户,故意传2组值,看看效果
self.bar1.append(2.12)
# self.bar1.append(6.5)
self.QBarSeries.append(self.bar1) # 将self.bar0这个柱体添加到柱状图的对象(self.QBarSeries)上
4.执行效果

5.想在图中添加叠加的柱体,怎么添加呢?由于装叠加柱体的是
QStackedBarSeries() 所以我们可以在上面代码后面继续添加

6.上叠加柱体的代码
self.StackedbarSeries = QStackedBarSeries() #注意:叠加柱状图使用的是这个方法 与上面的QBarSeries不一样
self.bar2 = QBarSet("芒果核") # 叠加的第一种柱体叫芒果核
self.bar2.setColor(QColor(30, 120, 50)) # 设置柱体的颜色
self.bar2.setLabelColor(QColor(15, 100, 200)) # 设置柱体上面显示的数值的颜色
self.bar2.append(5) # 注意,上面有3个用户,传3个值
self.bar2.append(6.12)
self.bar2.append(7.5)self.bar3 = QBarSet("芒果肉") # 叠加在芒果核上的柱体芒果肉
self.bar3.setColor(QColor(130, 20, 50)) # 设置柱体的颜色
self.bar3.setLabelColor(QColor(250, 200, 120)) # 设置柱体上面显示的数值的颜色
self.bar3.append(3) # 注意,上面有3个用户,传3个值
self.bar3.append(2)
self.bar3.append(2.1)self.StackedbarSeries.append(self.bar2) #把2种柱体加入到叠加柱状图里
self.StackedbarSeries.append(self.bar3)
self.StackedbarSeries.setVisible(True)#显示叠加柱状图
self.StackedbarSeries.setLabelsVisible(True)#显示叠加柱状图上的数值self.addSeries(self.StackedbarSeries)#把叠加柱状图加到坐标轴图上
self.setAxisX(self.axisX, self.StackedbarSeries)#把叠加柱状图的坐标值与坐标轴对应
self.setAxisY(self.axisY, self.StackedbarSeries)
7.执行效果,颜色有点糊,可以自行修改颜色的值

8.完整代码
import sysfrom PyQt5.QtChart import QChart, QChartView, QBarCategoryAxis, QValueAxis, QBarSeries, QBarSet, QStackedBarSeries
from PyQt5.QtGui import QPainter, QColor
from PyQt5.QtWidgets import QMainWindow, QApplicationfrom untitled import Ui_MainWindow #从生成好的py文件内导入设计好的UI类class Window(QMainWindow, Ui_MainWindow):#这个是将图表与UI图连接起来def __init__(self):super().__init__()self.setup_ui() # 渲染画布def setup_ui(self):self.setupUi(self)self.plot_qchart = User_QBarSeries() #将图表实例化self.graphicsView.setChart(self.plot_qchart)self.graphicsView.setRenderHint(QPainter.Antialiasing) # 抗锯齿self.graphicsView.setRubberBand(QChartView.RectangleRubberBand)class User_QBarSeries(QChart): #绘制柱状图def __init__(self, parent=None, ):super(User_QBarSeries, self).__init__(parent)self.window = parent
#设置X轴self.axisX=QBarCategoryAxis() #设置x轴坐标,用来显示柱状图的类型
#给x轴添加轴上的点self.axisX.append("用户1")self.axisX.append("用户2")self.axisX.append("用户3")self.axisX.setLabelsColor(QColor(0, 200, 0))#设置X轴坐标的颜色,就是上面用户1、用户2、用户3的颜色
# 设置Y轴self.axisY=QValueAxis()#设置Y轴坐标,显示值类型的Y轴self.axisY.setRange(0,10)#设置Y轴的范围self.axisY.setTitleText("单位:克")#设置Y轴的名字self.axisY.setLabelFormat("%.2f")#设置Y轴上的点的显示格式self.QBarSeries = QBarSeries() #用来装很多柱状图的对象
#一组柱体self.bar0 = QBarSet("苹果")#1种系列的柱状图self.bar0.setColor(QColor(200,20,150))#设置柱体的颜色self.bar0.setLabelColor(QColor(200,200,150))#设置柱体上面显示的数值的颜色self.bar0.append(3.23) #注意,上面有3个用户,对应的传3个值self.bar0.append(2.123)self.bar0.append(6.5)self.QBarSeries.append(self.bar0)#将self.bar0这个柱体添加到柱状图的对象(self.QBarSeries)上self.bar1 = QBarSet("香蕉") # 1种系列的柱状图self.bar1.setColor(QColor(130, 120, 50)) # 设置柱体的颜色self.bar1.setLabelColor(QColor(15, 100, 200)) # 设置柱体上面显示的数值的颜色self.bar1.append(5) # 注意,上面有3个用户,故意传2组值,看看效果self.bar1.append(2.12)# self.bar1.append(6.5)self.QBarSeries.append(self.bar1) # 将self.bar0这个柱体添加到柱状图的对象(self.QBarSeries)上self.QBarSeries.setVisible(True)#将柱状图显示出来self.QBarSeries.setLabelsVisible(True)#将柱体对应的Y值也显示出来self.addSeries(self.QBarSeries)#将整个柱状图放到坐标图里面self.setAxisX(self.axisX, self.QBarSeries)#将整个柱状图的坐标与坐标轴对应self.setAxisY(self.axisY, self.QBarSeries)self.StackedbarSeries = QStackedBarSeries() #注意:叠加柱状图使用的是这个方法 与上面的QBarSeries不一样self.bar2 = QBarSet("芒果核") # 叠加的第一种柱体叫芒果核self.bar2.setColor(QColor(30, 120, 50)) # 设置柱体的颜色self.bar2.setLabelColor(QColor(15, 100, 200)) # 设置柱体上面显示的数值的颜色self.bar2.append(5) # 注意,上面有3个用户,传3个值self.bar2.append(6.12)self.bar2.append(7.5)self.bar3 = QBarSet("芒果肉") # 叠加在芒果核上的柱体芒果肉self.bar3.setColor(QColor(130, 20, 50)) # 设置柱体的颜色self.bar3.setLabelColor(QColor(250, 200, 120)) # 设置柱体上面显示的数值的颜色self.bar3.append(3) # 注意,上面有3个用户,传3个值self.bar3.append(2)self.bar3.append(2.1)self.StackedbarSeries.append(self.bar2) #把2种柱体加入到叠加柱状图里self.StackedbarSeries.append(self.bar3)self.StackedbarSeries.setVisible(True)#显示叠加柱状图self.StackedbarSeries.setLabelsVisible(True)#显示叠加柱状图上的数值self.addSeries(self.StackedbarSeries)#把叠加柱状图加到坐标轴图上self.setAxisX(self.axisX, self.StackedbarSeries)#把叠加柱状图的坐标值与坐标轴对应self.setAxisY(self.axisY, self.StackedbarSeries)if __name__ == "__main__":app = QApplication(sys.argv)mywindow = Window()mywindow.show()sys.exit(app.exec_())
相关文章:
python-使用Qchart总结4-绘制多层柱状图
1、上代码 import sysfrom PyQt5.QtChart import QChart, QChartView, QBarCategoryAxis, QValueAxis, QBarSeries, QBarSet from PyQt5.QtGui import QPainter, QColor from PyQt5.QtWidgets import QMainWindow, QApplicationfrom untitled import Ui_MainWindow #从生成好的…...
Java学习笔记-02
目录 流程控制语句 分支语句 循环语句 Random随机数 数组 方法 流程控制语句 分为顺序语句(从上到下,依次执行),分支语句(if,else...)和循环语句(for,while,do...while) 分支语句 分为if与switch两大类 单分…...
中通快递财报预测:中通快递2023年收入和利润将大幅下降
来源:猛兽财经 作者:猛兽财经 市场对中通快递2023年的预测 卖方虽然预测中通快递(ZTO)在2023年的表现会很不错,但他们也预计中通快递今年的财务业绩将不会像去年那样好。 根据S&P Capital IQ的数据,卖…...
Javaweb | 状态管理:Session、Cookie
💗wei_shuo的个人主页 💫wei_shuo的学习社区 🌐Hello World ! 状态管理 问题引入 HTTP协议是无转态的,不能保存提交的信息如果用户发来一个新的请求,服务器无法知道它是否与上次的请求联系对于那些需要多次…...
Redux
Redux 作用 集中式管理react、vue、angular等应用中多个组件的状态,是一个库,不单单可用于react,只是更多的用于react中 模型图 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AaFD3raR-1682994570670)(img/re…...
Nacos配置中心的详解与搭建
Namespace 简介 用于进行租户粒度的配置隔离,不同的命名空间下,可以存在相同的 Group 或 Data ID 的配置 配置Namespace 点击nacos的命名空间——点击新建命名空间 开发环境【dev】测试环境【test】正式环境【prod】 DataID 简介 Data ID 通常用于…...
Java入门教程||Java 封装||Java 接口
Java 封装 在面向对象程式设计方法中,封装(英语:Encapsulation)是指,一种将抽象性函式接口的实作细节部份包装、隐藏起来的方法。 封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码…...
微软开源AI修图工具让老照片重现生机
GitHub - microsoft/Bringing-Old-Photos-Back-to-Life: Bringing Old Photo Back to Life (CVPR 2020 oral) 支持划痕修复,以及模型训练。 Old Photo Restoration (Official PyTorch Implementation) Project Page | Paper (CVPR version) | Paper (Journal vers…...
什么是 Docker?它能用来做什么?
文章目录 什么是云计算?什么是 Docker?虚拟化技术演变特点架构镜像(Image)仓库(Registry )容器(Container) 应用场景 什么是云计算? 云计算是一种资源的服务模式&#x…...
生成器的创建方式(py编程)
1. 生成器的介绍 根据程序员制定的规则循环生成数据,当条件不成立时则生成数据结束。数据不是一次性全部生成处理,而是使用一个,再生成一个,可以节约大量的内存。 2. 创建生成器的方式 生成器推导式yield 关键字 生成器推导式…...
百胜中国:未来将实现强劲增长
来源:猛兽财经 作者:猛兽财经 收入分析与未来展望 在过去的三年里,百胜中国(YUMC)的收入一直受到疫情导致的旅行限制和封锁的影响。为了应对疫情造成的业务中断,该公司开始专注于外卖业务,并将…...
【Celery】任务Failure或一直超时Pending
编写背景 task进入队列后,部分任务出现Failure或者一直Pending,且业务代码没有报错。 运行环境 celery配置 from celery import Celery broker redis://:127.0.0.1:6379/1 backend redis://:127.0.0.1:6379/2 app Celery(brokerbroker,backendbackend,includ…...
【严重】VMware Aria Operations for Logs v8.10.2 存在反序列化漏洞(CVE-2023-20864)
漏洞描述 VMware Aria Operations for Logs前身是vRealize Log Insight,VMware用于处理和管理大规模的日志数据产品。 VMware Aria Operations for Logs 8.10.2版本中存在反序列化漏洞,具有 VMware Aria Operations for Logs 网络访问权限的未经身份验…...
java实现乘法的方法
我们都知道,乘法运算的核心思想就是两个数相乘,如果能将乘法运算转化成一个加数的运算,那么这个问题就很容易解决。比如我们要实现23的乘法,首先需要定义两个变量:2和3。我们将这两个变量定义为一个变量:2x…...
SSD目标检测
数据集以及锚框的处理 数据集: 图像:(batch_size , channel , height , width) bounding box: (batch_size , m , 5) m: 图像中可能出现的最多边界框的数目 5: 第一个数据为边界框对应的种…...
SpringBoot项目结构及依赖技术栈
目录 1、pom.xml文件配置说明 2、SpringBoot项目结构说明 3、入门案例关键配置说明 🌈 前面我们学习了SpringBoot快速入门案例,本节我们通过POM文件和项目结构分析两部分内容了解下关于SpringBoot的一些配置说明,以便全面了解SpringBoot项…...
crash怎么分析kdump core文件
kdump是Linux内核的一种机制,可以在出现系统崩溃时自动生成一个内存转储文件(core file),也称为crash dump。这个core文件包含了系统当时的内存状态和各个进程的调用栈信息,可以帮助分析和定位崩溃的原因。 要分析kdump core文件,…...
微内核与宏内核的区别和联系
微内核与宏内核的区别和联系 一、什么是内核?二、微内核和宏内核的区别 一、什么是内核? 内核是计算机操作系统的核心程序,它负责整个OS功能的调控。 二、微内核和宏内核的区别 微内核(Micro)宏内核(Monolithic/ Macro)地址空间内核服务和用…...
都什么年代了,还在用Excel和ACCESS做应用系统?快来学Eversheet
表格用的越久,就越头疼 稍微有规模的企业,各种表格都会多如牛毛,一堆堆的,有时候这里一张,那里一张,容易整乱,更容易丢失。不管你是用WPS还是用Excel,有些问题你还是依旧解决不了。…...
【JAVAEE】JAVA数据库连接(JDBC)
1.什么是JDBC? Java数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。JDBC也是Sun Microsyste…...
(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)
题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...
【Python】 -- 趣味代码 - 小恐龙游戏
文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...
黑马Mybatis
Mybatis 表现层:页面展示 业务层:逻辑处理 持久层:持久数据化保存 在这里插入图片描述 Mybatis快速入门 是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...
Frozen-Flask :将 Flask 应用“冻结”为静态文件
Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是:将一个 Flask Web 应用生成成纯静态 HTML 文件,从而可以部署到静态网站托管服务上,如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...
Nginx server_name 配置说明
Nginx 是一个高性能的反向代理和负载均衡服务器,其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机(Virtual Host)。 1. 简介 Nginx 使用 server_name 指令来确定…...
稳定币的深度剖析与展望
一、引言 在当今数字化浪潮席卷全球的时代,加密货币作为一种新兴的金融现象,正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而,加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下,稳定…...
Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)
在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马(服务器方面的)的原理,连接,以及各种木马及连接工具的分享 文件木马:https://w…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...
免费PDF转图片工具
免费PDF转图片工具 一款简单易用的PDF转图片工具,可以将PDF文件快速转换为高质量PNG图片。无需安装复杂的软件,也不需要在线上传文件,保护您的隐私。 工具截图 主要特点 🚀 快速转换:本地转换,无需等待上…...
