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

PyQt6基础_QtCharts绘制横向柱状图

前置:

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.lryc.cn/news/2392744.html

相关文章:

  • 《TCP/IP 详解 卷1:协议》第2章:Internet 地址结构
  • Python学习(5) ----- Python的JSON处理
  • 如何通过一次需求评审,让项目效率提升50%?
  • 再见Notepad++,你好Notepad--
  • element-plus bug整理
  • 技术-工程-管用养修保-智能硬件-智能软件五维黄金序位模型
  • LangChain-自定义Tool和Agent结合DeepSeek应用实例
  • 用 3D 可视化颠覆你的 JSON 数据体验
  • 联想小新笔记本电脑静电问题导致无法开机/充电的解决方案
  • MVCC(多版本并发控制)机制
  • Mac M1 安装 ffmpeg
  • Spring框架学习day3--Spring数据访问层管理(IOC)
  • 什么是集群(Cluster)?如何保证集群的高可用性?
  • React从基础入门到高级实战:React 核心技术 - 动画与过渡效果:提升 UI 交互体验
  • 重读《人件》Peopleware -(13)Ⅱ 办公环境 Ⅵ 电话
  • Free2AI:企业智能化转型的加速器
  • Python训练营打卡Day40
  • 制作一款打飞机游戏63:自动保存
  • 使用animation.css库快速实现CSS3旋转动画效果
  • 基于NetWork的类FNAF游戏DEMO框架
  • 湖北理元理律师事务所:债务优化中的生活保障实践
  • golang连接sm3认证加密(app)
  • 【Zephyr 系列 2】用 Zephyr 玩转 Arduino UNO / MEGA,实现串口通信与 CLI 命令交互
  • AIS常见问题解答(AIS知识补充)
  • 基于Matlab实现指纹识别系统
  • Windows10下搭建sftp服务器(附:详细搭建过程、CMD连接测试、连接失败问题分析解决等)
  • Vue3中Element-Plus中el-input及el-select 边框样式
  • vue + ant-design + xlsx 实现Excel自定义模板导入功能
  • SAP saml2 元数据 HTTP 错误
  • 知识课堂|sCMOS相机可编程快门模式解析