PyQt介绍——QChart饼图图表

news2024/12/24 20:43:41

在PyQt5中,我们可以使用QChart模块来创建各种类型的图表,包括饼图。饼图是一种常用的数据可视化方式,用于展示不同类别在整体中的比例关系。

安装相关的库:

不包含在PyQt5里面,需要另外安装

pip install PyQtChart -i https://mirrors.aliyun.com/pypi/simple/

QPieSeries常用函数:

方法说明
append(self, slice)添加一个切片slice到饼图中
append(label, value)将指定label和value的切片添加到饼图中,如果添加成功则返回切片对象,否则返回空值。
clear(self)清除饼图中的所有切片。
count(self)获得切片数目
setHoleSize(self)设置饼图孔洞尺寸,该值相对于图表矩形。0.0是最小大小(绘制完整的饼图,不带孔)。1.0是可以容纳图表的最大尺寸(甜甜圈没有宽度)。默认值为0.0。设置此属性时,如有必要,将调整size属性,以确保孔大小不大于饼图大小。
setLabelsVisible(self, visible)将所有切片标签的可见性设置为*visible。**注意:*此功能仅影响序列中的当前切片。如果添加了新切片,则默认标签可见性为False。
setPieStartAngle(self, startAngle)设置饼图的开始角度为startAngle,完整的饼图是360度,其中12点是0度。默认值为360。
setPieEndAngle(self, endAngle)设置饼图结束角度为endAngle
setPieSize(self, relativeSize)设置饼图的相对尺寸为relativeSize,该值相对于图表矩形, 0.0是最小尺寸(未绘制饼图),1.0是适合图表的最大尺寸。默认值为0.7。设置此属性时,如有必要,将调整holeSize属性,以确保孔大小不大于饼图大小。
sum(self)返回饼图中所有切片值的总和。
reomove(self, slice)从饼图中删除指定的切片slice。切片将被永久删除。
take(self, slice)从饼图中获取由slice指定的单个切片。不删除切片对象。

QPieSeries常用信号:

信号说明
added(self, slices)当slices加入到饼图时信号被发射
clicked(self,slice)单击由slice指定的切片时,发射该信号
countChanged(self)当切片计数改变时,该信号被发射
doubleClicked(slef, slice)双击由slice指定的切片时,将发出此信号
hovered(self, slice, state)当鼠标悬停在slice指定的切片上时,将发出此信号。当鼠标移到切片上时,state变为True,而当鼠标再次移开时,state变为False。
pressed(self, slice)当用户单击由slice指定的切片并按住鼠标按钮时,将发出此信号。
released(self, slice)当用户释放对slice指定的切片的鼠标按下时,将发出此信号。
removed(self,slices)当从饼图中删除由片段指定的slices时,将发出此信号。
sumChanged()当所有切片的总和发生变化时,将发射该信号。

QPieSlice常用函数:

方法说明
setBorderColor(self,color)设置用于绘制切片边界的颜色。
setBorderWidth(self, width)设置切片边界的宽度
setBrush(self, brush)设置用于填充切片的画刷。
setColor(self, color)设置切片的填充(画刷)颜色
setExplodeDistanceFactor(self, factor)设置explode切片偏移饼的距离。1.0表示距离与半径相同。0.5表示该距离是半径的一半。默认距离为0.15。
setExploded(self, exploded)设置切片的explode属性。
setLabel(self, label)设置切片的标签。
setLabelArmLengthFactor(self, factor)设置切片标签臂的长度。该因数是相对于扇形半径的。1.0表示距离与半径相同。0.5表示该距离是半径的一半。默认距离为0.15。
setLabelBrush(self, brush)设置用于绘制切片的标签和标签臂的笔刷。
setLabelColor(self, color)设置用于绘制切片标签的颜色。
setLabelFont(self, font)设置用于绘制标签文本的字体。
setLabelPosition(self, position):设置切片标签的位置
setLabelVisible(self, visible)设置切片标签的是否可见。默认情况下,标签不可见。
setPen(self, pen)设置用于绘制切片边界的画笔。
setValue(self, value)设置切片与饼图中所有切片的总和相比的百分比。实际值范围是0.0到1.0。将切片添加到系列后,将自动更新

QPieSlice 常用信号:

信号说明
angleSpanChanged(self)当切片的角度跨度发生变化时,将发出此信号。
borderColorChanged(self)当切片边界颜色更改时,将发射此信号。
borderWidthChanged(self)当切片边界宽度改变时,该信号被发射。
brushChanged(self)当用于填充切片的笔刷更改时,将发出此信号。
clicked(self)单击切片时会发出此信号。
colorChanged(self)当切片颜色改变时,该信号被发射。
doubleClicked(self)用户双击切片时会发出此信号。
hovered(self,state)当鼠标悬停在切片上时,将发出此信号。当鼠标移到切片上时,state变为True,而当鼠标再次移开时,state变为False。
labelBrushChanged(self)切片的标签笔刷更改时,将发出此信号。
labelChanged(self)切片标签更改时将发出此信号。
labelColorChanged(self)切片标签颜色更改时,将发出此信号。
labelFontChanged(self)当切片的标签字体更改时,将发出此信号。
labelVisibleChanged(self)切片标签的可见性更改时,将发出此信号。
penChanged(self)当用于绘制切片边界的笔改变时,将发出此信号。
percentageChanged(self)当切片的百分比发生变化时,将发出此信号。
pressed(self)当用户单击切片并按住鼠标按钮时,将发出此信号。
released(self)当用户释放切片上的鼠标按键时,将发出此信号。
startAngleChanged(self)切片的起始角度发生变化时,将发出此信号。
valueChanged(self)当切片值改变时,该信号被发射。

例子:

# -*- coding:utf-8 -*-
import sys

from PyQt5.QtChart import QChart, QChartView, QPieSeries
from PyQt5.QtGui import QPainter, QColor
from PyQt5.QtWidgets import QWidget, QHBoxLayout, QSizePolicy, QApplication


class ChartPieSeries(QWidget):
    def __init__(self, parent=None):
        super(ChartPieSeries, self).__init__(parent)

        # 设置窗口标题
        self.setWindowTitle('实战 Qt for Python: QChart饼图演示')
        self.resize(200, 200)

        layout = QHBoxLayout()
        layout.setContentsMargins(0, 0, 0, 0)
        self.setLayout(layout)

        # 设置饼图数据
        series = QPieSeries()
        series.setPieSize(1.0)
        series.append("success", 79)
        series.append("fail", 21)

        # 设置笔刷
        slice_succ = series.slices()[0]
        slice_fail = series.slices()[1]
        slice_succ.setBrush(QColor(0, 176, 80))
        slice_fail.setBrush(QColor(192, 0, 0))

        # 创建图表
        chart = QChart()
        chart.setContentsMargins(0, 0, 0, 0)
        chart.addSeries(series)
        chart.legend().hide()
        chart.setBackgroundBrush(QColor(202, 222, 236))

        # 图表视图
        chartView = QChartView(chart)
        chartView.setContentsMargins(0, 0, 0, 0)
        chartView.setRenderHint(QPainter.Antialiasing)
        chartView.setStyleSheet("background-color: rgb(202, 222, 236);")
        chartView.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
        layout.addWidget(chartView)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = ChartPieSeries()
    w.resize(200, 200)
    w.show()
    sys.exit(app.exec_())

效果图:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1583498.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

前端工程化理解 (2024 面试题)

最好介绍远古世界最好随性一点,不要太刻板 ,不然像背书 什么是前端工程化? - 知乎 前端工程化的历史 互联网初期,09 年以前,页面只需要展示一些列表、表格、文章内容以及简单图片即可,其目的是为了传送信…

[C语言][数据结构][链表] 单链表的从零实现!

目录 零.必备知识 1.一级指针 && 二级指针 2. 节点的成员列表 a.数据 b.指向下一个节点的指针. 3. 动态内存空间的开辟 (malloc-calloc-realloc) 一.单链表的实现与销毁 1.1 节点的定义 1.2 单链表的尾插 1.3 单链表的头插 1.4 单链表的尾删 1.5 单链表的头删 1…

Harmony鸿蒙南向驱动开发-RTC

RTC(real-time clock)为操作系统中的实时时钟设备,为操作系统提供精准的实时时间和定时报警功能。当设备下电后,通过外置电池供电,RTC继续记录操作系统时间;设备上电后,RTC提供实时时钟给操作系…

第十四届蓝桥杯真题-平方差

考察(数学应用) 代码及其解析:90%数据 #include <iostream> using namespace std; int main() {int ans0;long long a,b;cin>>a>>b;for(int ia;i<b;i){if(i%21)ans;if(i%40)ans; }cout<<ans;return 0; }

一例简单的文件夹病毒的分析

概述 这是一个典型的文件夹病毒&#xff0c;使用xp时代的文件夹图标&#xff0c;通过可移动存储介质传播&#xff0c;会向http://fionades.com/ABIUS/setup.exe下载恶意载荷执行。 其病毒母体只是一个加载器&#xff0c;会在内存是解密加载一个反射型的dll&#xff0c;主要的…

uniapp - 微信小程序 - 使用uCharts的一些问题

文章目录 uniapp - 微信小程序 - 使用uCharts的一些问题一、开发者工具显示正常&#xff0c;真机调试统计图不随页面滚动二、数据过多开启滚动条&#xff0c;无法滑动滚动条三、饼图点击不显示提示窗/点击位置bug、多个同类型统计图点击不显示提示框问题四、 formatter 自定义 …

九州金榜|孩子叛逆期仇视父母怎么办?

孩子在成长到一段阶段就会出现叛逆&#xff0c;孩子出现了叛逆情绪&#xff0c;如果家长处理不好亲子关系&#xff0c;孩子很容易仇视父母&#xff0c;这对于家长来说是非常心痛的&#xff0c;在这个阶段的孩子对父母来说&#xff0c;具有一定挑战性&#xff0c;这也是引导孩子…

基于单片机电子指南针系统设计

**单片机设计介绍&#xff0c;基于单片机电子指南针系统设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机电子指南针系统设计概要主要涵盖了硬件设计、软件设计、磁场传感器选择、数据处理和显示等方面。以下是对该…

【MySQL数据库 | 第二十五篇】深入探讨MVCC底层原理

前言&#xff1a; 在当今互联网时代&#xff0c;数据库扮演着数据存储和管理的关键角色。对于大型Web应用程序和企业级系统而言&#xff0c;高效地处理并发访问和事务管理是至关重要的。多版本并发控制&#xff08;MVCC&#xff09;是一种数据库事务处理的技术&#xff0c;旨…

【数据结构练习题】队——1.用队实现栈2.用栈实现队

♥♥♥♥♥个人主页♥♥♥♥♥ ♥♥♥♥♥数据结构练习题总结专栏♥♥♥♥♥ ♥♥♥♥♥上一章&#xff1a;堆的练习题♥♥♥♥♥ 文章目录 1.用队去实现栈1.1问题描述1.2思路分析1.3绘图分析1.4代码实现2.用栈实现队2.1问题描述2.2思路分析1.3绘图分析2.4代码实现 1.用队去实现…

doss攻击为什么是无解的?

这个让Google、亚马逊等实力巨头公司也无法避免的攻击。可以这么说&#xff0c;是目前最强大、最难防御的攻击之一&#xff0c;属于世界级难题&#xff0c;并且没有解决办法。 Doss攻击的原理不复杂&#xff0c;就是利用大量肉鸡仿照真实用户行为&#xff0c;使目标服务器资源…

【漏洞复现】WordPress Welcart 任意文件读取漏洞(CVE-2022-4140)

0x01 产品简介 Welcart 是一款免费的 WordPress 电子商务插件。Welcart 具有许多用于制作在线商店的功能和自定义设置。您可以轻松创建自己的原始在线商店。 0x02 漏洞概述 Welcart存在任意文件读取漏洞&#xff0c;未授权的攻击者可以通过该漏洞读取任意文件&#xff0c;获…

【无标题】系统思考—心智模式

“直到你使无意识变为有意识&#xff0c;它将指导你的生活并且你会称之为命运。”—卡尔荣格 心智模式深藏于我们内心之中&#xff0c;它潜移默化地影响着我们对世界的理解和判断。往往这些影响是如此隐蔽&#xff0c;以至于我们自己都未必察觉到是什么在驱动我们的选择、决策…

利用Python ARM网关仓储物流AGV小车控制器

在现代智慧物流体系中&#xff0c;高效的信息管理系统是物流中心实现精准跟踪货物、科学管理库存及优化配送路线的关键环节。通过采用ARM架构的工控机或网关&#xff0c;并结合Python的二次开发能力&#xff0c;可以有效集成并强化物流管理系统的数据处理与通信功能&#xff0c…

最坏情况为线性时间的第k大元素

在统计和数据分析中&#xff0c;我们经常会遇到求最大值、最小值、中位数、四分位数、Top K等类似需求&#xff0c;其实它们都属于顺序统计量&#xff0c;本文将对顺序统计量的定义和求解算法进行介绍&#xff0c;重点介绍如何在最差时间复杂度也是线性的情况下求解第k大元素。…

代码随想录:栈与队列4-6

20.有效的括号 题目 给定一个只包括 (&#xff0c;)&#xff0c;{&#xff0c;}&#xff0c;[&#xff0c;] 的字符串 s &#xff0c;判断字符串是否有效。 有效字符串需满足&#xff1a; 左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一…

OpenHarmony分布式软总线API调用测试工具 softbus_tool使用说明

softbus_tool 是 OpenHarmony 分布式软总线 API 调用测试工具&#xff0c;文件结构如下图所示。 softbus_tool 能够将软总线 interfaces 目录下的一些常用接口集中起来&#xff0c;供设备间搭建一些场景时使用&#xff08;比如设备绑定、BR 组网&#xff0c;BLE 组网&#xff…

红豆Cat 1开源|项目三: 从0-1设计一款HTTP版本RTU(支持GNSS)产品的软硬件全过程

HTTP版RTU&#xff08;支持GNSS&#xff09;项目概述 RTU&#xff08;Remote Terminal Unit&#xff09;&#xff0c;中文即远程终端控制系统&#xff0c;负责对现场信号、工业设备的监测和控制。RTU是构成企业综合自动化系统的核心装置&#xff0c;通常由信号输入/出模块、微…

ArrayList中多线程的不安全问题

ArrayList中的不安全问题 正常的输出 List<String> list Arrays.asList("1","2","3"); list.forEach(System.out::println);为什么可以这样输出&#xff0c;是一种函数是接口&#xff0c;我们先过个耳熟 Arrys.asList是返回一个ArrayL…

Redis高级-分布式缓存RDB原理

分布式缓存 1.1.2.RDB原理 bgsave开始时会fork主进程得到子进程&#xff0c;子进程共享主进程的内存数据。完成fork后读取内存数据并写入 RDB 文件。 fork采用的是copy-on-write技术&#xff1a; 当主进程执行读操作时&#xff0c;访问共享内存&#xff1b;当主进程执行写操…