PyQt6基础_QtCharts绘制横向柱状图

article/2025/7/21 5:52:03

前置:

pip install PyQt6-Charts

结果:

代码:

import sysfrom PyQt6.QtCharts import (QBarCategoryAxis, QBarSet, QChart,QChartView, QValueAxis,QHorizontalBarSeries)
from PyQt6.QtCore import Qt,QSize
from PyQt6.QtGui import QPainter,QColor
from PyQt6.QtWidgets import QApplication, QWidget,QVBoxLayoutclass BarChartWidget(QWidget):def __init__(self):super().__init__()self.setMinimumSize(QSize(400,600))self.chart = QChart()self._chart_view = QChartView(self.chart)self._chart_view.setRenderHint(QPainter.RenderHint.Antialiasing)layout = QVBoxLayout()layout.addWidget(self._chart_view)self.setLayout(layout)passdef set_data(self,data:dict):self.data = dataself.set_0 = QBarSet('')self.set_0.append(list(self.data['data_map'].values()))  # 7self.set_0.setBarSelected(self.data['target_int'], True)self.set_0.setSelectedColor(QColor(255, 99, 71))self.series = QHorizontalBarSeries()self.series.append(self.set_0)self.series.setLabelsVisible(True)self.series.setLabelsPosition(QHorizontalBarSeries.LabelsPosition.LabelsInsideEnd)self.series.setLabelsFormat(f"@value {self.data['union_val']}")self.chart.addSeries(self.series)self.chart.setTitle(self.data['title'])self.chart.legend().hide()self.chart.setAnimationOptions(QChart.AnimationOption.SeriesAnimations)self.categories = list(self.data['data_map'].keys())self.axis_x = QBarCategoryAxis()self.axis_x.append(self.categories)self.chart.addAxis(self.axis_x, Qt.AlignmentFlag.AlignLeft)self.series.attachAxis(self.axis_x)self.axis_y = QValueAxis()self.axis_y.setRange(0, max(list(self.data['data_map'].values())))self.chart.addAxis(self.axis_y, Qt.AlignmentFlag.AlignBottom)self.series.attachAxis(self.axis_y)passif __name__ == '__main__':app = QApplication([])pre_data = {'title':'横向柱状图','target_int':2,'union_val':'元','data_map':{'苹果':8,'香蕉':5,'榴莲':25,'葡萄':9,'荔枝':15}}mw = BarChartWidget()mw.set_data(pre_data)mw.show()sys.exit(app.exec())pass


http://www.hkcw.cn/article/INfxtWGkGN.shtml

相关文章

ssm 学习笔记 day02

AOP静态处理 现在我们编写一个加减乘除的组件(Bean) package com.atguigu.spring02aop.calculator.impl;import com.atguigu.spring02aop.calculator.MathCalculator; import org.springframework.stereotype.Component;Component public class MathCalculatorImpl implement…

无线通信模块赋能粮食烘干设备故障预判与远程诊断

一、项目背景 农业是我国国民经济的重要产业,粮食烘干作为粮食产后加工的关键环节,对于保障粮食质量、减少损耗具有重要意义。传统的粮食烘干设备通常需要人工现场监控和操作,不仅效率低下,而且容易受到人为因素的影响&#xff0…

Rerank的评测

RAG中如果第一次的召回不是很理想,最好优先排查一下相似度检索算法。如果发现是相似度算法的问题,那么可以增大top-k,然后引入更精确的算法进行rerank 针对rerank的评测,使用命中率(hit rate)和平均倒数排名…

从零到一:我的技术博客导航(持续更新)

作者:冰茶 最后更新:2025年5月31日 本文收录了我的C#编程学习心得与技术探索,将持续更新 前言 作为一名.NET开发者,C#语言的学习与探索一直是我技术成长的核心路径。本文集整理了我在C#学习过程中的思考与实践,希望能…

《java创世手记》---java基础篇(下)

《Java 创世手记 - 基础篇(下)》 第五章:契约与规范 —— 接口 (Interfaces) 与抽象类 (Abstract Classes) 造物主,在你日益繁荣的世界里,你发现仅仅依靠“继承”来构建“物种体系”有时会遇到一些限制。比如&#x…

2.2.2 06年T1

成功的同化机器——美国:2006年考研英语(一)Text 1精析 本文解析2006年考研英语(一)第一篇文章,揭示美国社会强大的文化同化力及其表现。 一、原文与翻译 Paragraph 1:美国社会的同化本质 L1: …

java对接bacnet ip协议(跨网段方式)

1、环境准备 #maven环境<repositories><repository><id>ias-releases</id><url>https://maven.mangoautomation.net/repository/ias-release/</url></repository></repositories><dependencies><dependency><…

ESP8266远程控制:实现网络通信与设备控制

概述&#xff1a; 最近一直在弄esp8266的网络通信&#xff0c;但是一直都还没搞懂到底esp8266可不可以通过连接一个网络过后&#xff0c;在很远的地方使用网络将其关掉 在网上找了两个教程都有程序&#xff0c;都跑通了 第一个 第二个找不到了&#xff0c;但是程序有 CSDN上放文…

解决方案:__cplusplus宏的值始终为199711L(即 C++98)

作者&#xff1a;翟天保Steven 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处 问题现象&#xff1a;被 "冻结" 的__cplusplus宏 在使用 Visual Studio&#xff08;MSVC&#xff09;编译 C 代码时&…

c++流之sstream/堆or优先队列的应用[1]

目录 c流之sstream 解释 注意事项 215.数据流的第k大 问题分析 修正代码 主要修改点 优先队列的比较规则 代码中的比较逻辑 为什么这样能维护第 k 大元素&#xff1f; 举个例子 总结 Python 实现&#xff08;使用heapq库&#xff09; Java 实现&#xff08;使用P…

智慧工厂整体解决方案

该方案围绕智能工厂建设,阐述其基于工业 4.0 和数字化转型需求,通过物联网、大数据、人工智能等技术实现生产自动化、数据化管理及联网协同的特点。建设步骤包括评估现状、设定目标、制定方案、测试调整、实施计划及持续改进,需整合 MES、ERP 等软件系统与传感器、机器人等硬…

OpenTelemetry × Elastic Observability 系列(一):整体架构介绍

本文是 OpenTelemetry Elastic Observability 系列的第一篇&#xff0c;将介绍 OpenTelemetry Demo 的整体架构&#xff0c;以及如何集成 Elastic 来采集和可视化可观测性数据。后续文章将分别针对不同编程语言&#xff0c;深入讲解 OpenTelemetry 的集成实践。 程序架构 Op…

Cypress API 中文详解

🌐 Cypress API 中文详解(全分类汇总) 📌 Cypress 是一款专为现代 Web 应用构建的前端测试工具,它提供了强大且直观的 API 来模拟用户操作、监听网络请求、控制浏览器行为。**本篇文章将系统梳理 Cypress 所提供的常用命令与 API,帮助你快速掌握自动化测试核心能力。 �…

宇树机器狗go2—slam建图(2)gmapping

0.前言 上一篇番外文章带大家认识了一下slam中常用的一些点云格式&#xff0c;本期文章会教大家如何让宇树的机器狗go2在仿真环境中使用gnaaping进行2d建图&#xff0c;在后续的slam建图和slam算法解析的时候会经常与这些点云信息打交道。宇树机器狗go2仿真会作为一个长期项目…

CVE-2019-17558源码分析与漏洞复现

漏洞概述 漏洞名称&#xff1a;Apache Solr Velocity 模板注入远程命令执行漏洞 漏洞编号&#xff1a;CVE-2019-17558 CVSS 评分&#xff1a;9.8 影响版本&#xff1a;Apache Solr 5.0.0 - 8.3.1 修复版本&#xff1a;Apache Solr ≥ 8.4.0 漏洞类型&#xff1a;远程代码执行&…

Linux入门——入门常用基础指令(3)

文章目录 入门常用基础指令(3)grep指令压缩解压打包压缩的必要性zip/unzip指令关于rzsz的操作tar指令(重要) bc指令uname指令shutdown指令history指令几个常用的热键ctrl c和ctrl dctrl rTab按键 入门常用基础指令(3) 入门Linux的常用指令还是比较多的。本篇文章是Linux入门部…

常见压缩算法性能和压缩率对比 LZ4 LZO ZSTD SNAPPY

网传压缩算法对比表 算法压缩率压缩速度解压速度支持流式压缩适用场景LZ4低极快极快是实时数据压缩、日志压缩、内存缓存等Zstandard高快快是文件压缩、网络传输、数据库备份等Brotli很高中等快是静态资源压缩&#xff08;HTML、CSS、JS&#xff09;等LZO低极快快是嵌入式系统…

Tkinter软件——显示txt标签的目标水平边框图像

代码&#xff1a; import tkinter as tk from tkinter import filedialog from tkinter import messagebox import cv2 from PIL import Image, ImageTk import osclass ImageBoxApp:def __init__(self, master):self.master masterself.master.title("Image Box Drawer…

学习vue3阶段性复习(插槽,Pinia,生命周期)

目录 插槽(匿名插槽&#xff0c;具名插槽) 插槽概述 匿名插槽 具名插槽 Pinia(统一管理&#xff0c;共享数据&#xff09; pinia概述 安装和使用Pinia 1 使用命令下载Pinia 2 再main.js中导入&#xff0c;注册到vue框架中 3使用pinia 持久化存储插件 1 第一步&…

创建环境 镜像报错UnavailableInvalidChannel: HTTP 404 NOT FOUND for channel...

报错&#xff1a;Platform: win-64 Collecting package metadata (repodata.json): failed UnavailableInvalidChannel: HTTP 404 NOT FOUND for channel anaconda/pkgs/main <https://mirrors.aliyun.com/anaconda/pkgs/main> The channel is not accessible or is inva…