PyQt介绍——QChart饼图图表

本文介绍了如何在PyQt5中使用QChart模块创建饼图,包括安装PyQtChart库,以及QPieSeries和QPieSlice类的常用方法和信号。实例展示了如何设置饼图数据、切片样式和事件处理。
摘要由CSDN通过智能技术生成

在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_())

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

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个使用QChart库完成饼图的示例,每个区域对应一个标题: ```python from PyQt5.QtChart import QChart, QChartView, QPieSeries from PyQt5.QtGui import QPainter from PyQt5.QtWidgets import QApplication, QMainWindow class MainWindow(QMainWindow): def __init__(self): super().__init__() # 创建一个QChart对象 chart = QChart() # 创建一个QPieSeries对象 series = QPieSeries() # 向QPieSeries对象添加数据 series.append("A", 1) series.append("B", 2) series.append("C", 3) series.append("D", 4) # 将QPieSeries对象添加到QChart对象中 chart.addSeries(series) # 设置饼图的标题 chart.setTitle("Pie Chart Example") # 设置饼图的字体大小 chart.setTitleFont(QFont("Arial", 16)) # 创建一个QChartView对象,并将QChart对象添加到其中 chartView = QChartView(chart) # 设置QChartView对象的大小 chartView.setFixedSize(400, 400) # 将QChartView添加到主窗口中 self.setCentralWidget(chartView) # 显示主窗口 self.show() if __name__ == '__main__': app = QApplication([]) window = MainWindow() app.exec_() ``` 在这个示例中,我们创建了一个QChart对象来容纳我们的饼图。然后,我们创建了一个QPieSeries对象,并向其添加数据。接下来,我们将QPieSeries对象添加到QChart对象中,并设置饼图的标题和字体大小。最后,我们创建了一个QChartView对象,并将QChart对象添加到其中,然后将QChartView添加到主窗口中。 注意,我们使用了QFont类来设置饼图标题的字体大小。如果您想要更改字体的其他属性(如颜色、加粗等),您可以使用QFont的其他方法来完成。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值