首页 后端 Python 正文

PyQt5中利用PyQtChart库实现画饼图

软硬件环境

  • Windows 10 64bit

  • Anaconda3 with python 3.8

  • PyCharm 2021.1

  • PyQt 5.15

简介

饼图,是数据可视化中最常见的一种方式,维基百科中的定义是这样的

饼图,或称饼状图,是一个划分为几个扇形的圆形统计图表,用于描述量、频率或百分比之间的相对关系。在饼图中,每个扇区的弧长(以及圆心角和面积)大小为其所表示的数量的比例。这些扇区合在一起刚好是一个完全的圆形。顾名思义,这些扇区拼成了一个切开的饼形图案。

下面这张图就是一个典型的饼图

PyQt5中利用PyQtChart库实现画饼图  第1张

PyQtChart

本文使用PyQtChart这个库来画饼图,这个库,需要我们单独安装,它并不在PyQt5中,虽然它们长的很像

pip install PyQtChart

代码实践

必要注释已经写在了代码行中:

import sys

from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.QtChart import QChart, QChartView, QPieSeries, QPieSlice
from PyQt5.QtGui import QPainter, QPen
from PyQt5.QtCore import Qt


class Window(QMainWindow):
    def __init__(self):
        super().__init__()

        self.setWindowTitle("PyQt5饼图")

        # 显示位置
        self.setGeometry(100, 100, 800, 600)
        self.create_piechart()
        self.show()

    def create_piechart(self):
        # 创建QPieSeries对象,它用来存放饼图的数据
        series = QPieSeries()

        # append方法中的数字,代表的是权重,完成可以改成其它,如80,70,60等等
        series.append("Python", 8)
        series.append("Java", 7)
        series.append("C", 6)
        series.append("C++", 5)
        series.append("PHP", 4)
        series.append("Swift", 3)

        # 单独处理某个扇区
        slice = QPieSlice()

        # 这里要处理的是python项,是依据前面append的顺序,如果是处理C++项的话,那索引就是3
        slice = series.slices()[0]

        # 突出显示,设置颜色
        slice.setExploded(True)
        slice.setLabelVisible(True)
        slice.setPen(QPen(Qt.red, 2))
        slice.setBrush(Qt.red)

        # 创建QChart实例,它是PyQt5中的类
        chart = QChart()
        # QLegend类是显示图表的图例,先隐藏掉
        chart.legend().hide()
        chart.addSeries(series)
        chart.createDefaultAxes()

        # 设置动画效果
        chart.setAnimationOptions(QChart.SeriesAnimations)

        # 设置标题
        chart.setTitle("饼图示例")

        chart.legend().setVisible(True)

        # 对齐方式
        chart.legend().setAlignment(Qt.AlignBottom)

        # 创建ChartView,它是显示图表的控件
        chartview = QChartView(chart)
        chartview.setRenderHint(QPainter.Antialiasing)

        self.setCentralWidget(chartview)


App = QApplication(sys.argv)
window = Window()
sys.exit(App.exec_())

最后,代码执行效果如下:

PyQt5中利用PyQtChart库实现画饼图  第2张

参考资料

源码下载

https://github.com/xugaoxiang/learningPyQt5

打赏
海报

本文转载自互联网,旨在分享有价值的内容,文章如有侵权请联系删除,部分文章如未署名作者来源请联系我们及时备注,感谢您的支持。

转载请注明本文地址:https://www.shouxicto.com/article/1637.html

-->

相关推荐

支付宝
微信
赞助本站