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

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...

接口测试中缓存处理策略

在接口测试中,缓存处理策略是一个关键环节,直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性,避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明: 一、缓存处理的核…...

测试微信模版消息推送

进入“开发接口管理”--“公众平台测试账号”,无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息: 关注测试号:扫二维码关注测试号。 发送模版消息: import requests da…...

【Oracle APEX开发小技巧12】

有如下需求: 有一个问题反馈页面,要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据,方便管理员及时处理反馈。 我的方法:直接将逻辑写在SQL中,这样可以直接在页面展示 完整代码: SELECTSF.FE…...

Appium+python自动化(十六)- ADB命令

简介 Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:

一、属性动画概述NETX 作用:实现组件通用属性的渐变过渡效果,提升用户体验。支持属性:width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项: 布局类属性(如宽高)变化时&#…...

【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密

在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...

在四层代理中还原真实客户端ngx_stream_realip_module

一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡&#xff08;如 HAProxy、AWS NLB、阿里 SLB&#xff09;发起上游连接时&#xff0c;将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后&#xff0c;ngx_stream_realip_module 从中提取原始信息…...

Rapidio门铃消息FIFO溢出机制

关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系&#xff0c;以下是深入解析&#xff1a; 门铃FIFO溢出的本质 在RapidIO系统中&#xff0c;门铃消息FIFO是硬件控制器内部的缓冲区&#xff0c;用于临时存储接收到的门铃消息&#xff08;Doorbell Message&#xff09;。…...

Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)

在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马&#xff08;服务器方面的&#xff09;的原理&#xff0c;连接&#xff0c;以及各种木马及连接工具的分享 文件木马&#xff1a;https://w…...