当前位置: 首页 > news >正文

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文件&#xff0c…...

微内核与宏内核的区别和联系

微内核与宏内核的区别和联系 一、什么是内核?二、微内核和宏内核的区别 一、什么是内核? 内核是计算机操作系统的核心程序,它负责整个OS功能的调控。 二、微内核和宏内核的区别 微内核(Micro)宏内核(Monolithic/ Macro)地址空间内核服务和用…...

都什么年代了,还在用Excel和ACCESS做应用系统?快来学Eversheet

表格用的越久,就越头疼 稍微有规模的企业,各种表格都会多如牛毛,一堆堆的,有时候这里一张,那里一张,容易整乱,更容易丢失。不管你是用WPS还是用Excel,有些问题你还是依旧解决不了。…...

【JAVAEE】JAVA数据库连接(JDBC)

1.什么是JDBC? Java数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。JDBC也是Sun Microsyste…...

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统

医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上,开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识,在 vs 2017 平台上,进行 ASP.NET 应用程序和简易网站的开发;初步熟悉开发一…...

可靠性+灵活性:电力载波技术在楼宇自控中的核心价值

可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...

C++ 求圆面积的程序(Program to find area of a circle)

给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...

GC1808高性能24位立体声音频ADC芯片解析

1. 芯片概述 GC1808是一款24位立体声音频模数转换器(ADC),支持8kHz~96kHz采样率,集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器,适用于高保真音频采集场景。 2. 核心特性 高精度:24位分辨率&#xff0c…...

JS设计模式(4):观察者模式

JS设计模式(4):观察者模式 一、引入 在开发中,我们经常会遇到这样的场景:一个对象的状态变化需要自动通知其他对象,比如: 电商平台中,商品库存变化时需要通知所有订阅该商品的用户;新闻网站中&#xff0…...

2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)

安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...

命令行关闭Windows防火墙

命令行关闭Windows防火墙 引言一、防火墙:被低估的"智能安检员"二、优先尝试!90%问题无需关闭防火墙方案1:程序白名单(解决软件误拦截)方案2:开放特定端口(解决网游/开发端口不通)三、命令行极速关闭方案方法一:PowerShell(推荐Win10/11)​方法二:CMD命令…...

C++11 constexpr和字面类型:从入门到精通

文章目录 引言一、constexpr的基本概念与使用1.1 constexpr的定义与作用1.2 constexpr变量1.3 constexpr函数1.4 constexpr在类构造函数中的应用1.5 constexpr的优势 二、字面类型的基本概念与使用2.1 字面类型的定义与作用2.2 字面类型的应用场景2.2.1 常量定义2.2.2 模板参数…...

未授权访问事件频发,我们应当如何应对?

在当下,数据已成为企业和组织的核心资产,是推动业务发展、决策制定以及创新的关键驱动力。然而,未授权访问这一隐匿的安全威胁,正如同高悬的达摩克利斯之剑,时刻威胁着数据的安全,一旦触发,便可…...