当前位置: 首页 > 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…...

django filter 统计数量 按属性去重

在Django中,如果你想要根据某个属性对查询集进行去重并统计数量,你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求: 方法1:使用annotate()和Count 假设你有一个模型Item,并且你想…...

MySQL中【正则表达式】用法

MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现(两者等价),用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例: 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...

Web 架构之 CDN 加速原理与落地实践

文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 &#xf…...

[ACTF2020 新生赛]Include 1(php://filter伪协议)

题目 做法 启动靶机,点进去 点进去 查看URL,有 ?fileflag.php说明存在文件包含,原理是php://filter 协议 当它与包含函数结合时,php://filter流会被当作php文件执行。 用php://filter加编码,能让PHP把文件内容…...

深入浅出Diffusion模型:从原理到实践的全方位教程

I. 引言:生成式AI的黎明 – Diffusion模型是什么? 近年来,生成式人工智能(Generative AI)领域取得了爆炸性的进展,模型能够根据简单的文本提示创作出逼真的图像、连贯的文本,乃至更多令人惊叹的…...

Linux中《基础IO》详细介绍

目录 理解"文件"狭义理解广义理解文件操作的归类认知系统角度文件类别 回顾C文件接口打开文件写文件读文件稍作修改,实现简单cat命令 输出信息到显示器,你有哪些方法stdin & stdout & stderr打开文件的方式 系统⽂件I/O⼀种传递标志位…...

小智AI+MCP

什么是小智AI和MCP 如果还不清楚的先看往期文章 手搓小智AI聊天机器人 MCP 深度解析:AI 的USB接口 如何使用小智MCP 1.刷支持mcp的小智固件 2.下载官方MCP的示例代码 Github:https://github.com/78/mcp-calculator 安这个步骤执行 其中MCP_ENDPOI…...

高端性能封装正在突破性能壁垒,其芯片集成技术助力人工智能革命。

2024 年,高端封装市场规模为 80 亿美元,预计到 2030 年将超过 280 亿美元,2024-2030 年复合年增长率为 23%。 细分到各个终端市场,最大的高端性能封装市场是“电信和基础设施”,2024 年该市场创造了超过 67% 的收入。…...

Docker、Wsl 打包迁移环境

电脑需要开启wsl2 可以使用wsl -v 查看当前的版本 wsl -v WSL 版本: 2.2.4.0 内核版本: 5.15.153.1-2 WSLg 版本: 1.0.61 MSRDC 版本: 1.2.5326 Direct3D 版本: 1.611.1-81528511 DXCore 版本: 10.0.2609…...

高保真组件库:开关

一:制作关状态 拖入一个矩形作为关闭的底色:44 x 22,填充灰色CCCCCC,圆角23,边框宽度0,文本为”关“,右对齐,边距2,2,6,2,文本颜色白色FFFFFF。 拖拽一个椭圆,尺寸18 x 18,边框为0。3. 全选转为动态面板状态1命名为”关“。 二:制作开状态 复制关状态并命名为”开…...