首页 后端 Python 正文

PyQt5中利用PyQtChart库实现画饼图

软硬件环境Windows 10 64bitAnaconda3 with python 3.8PyCharm 2021.1PyQt 5.15简介饼图,是数据可视化中最常见的一种方式,维基百科中的定义是这样的饼图,或称饼状图,是一个划分为几个扇形的圆形统计图表,用于描述量、频率或百分比之间的相对关系。在饼图中,每个扇区的弧长(以及圆心角和面积)大小为其所表示的数

软硬件环境

  • 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

相关推荐

说说 Python 的元编程

   提到元这个字,你也许会想到元数据,元数据就是描述数据本身的数据,元类就是类的类,相应的元编程就是描述代码本身的代码,元编程就是关于创建操作源代码(比如修改、生成或包装原来的代码)的函数和类。主要...

Python 2022.07.20 0 162

如何用 Python 自动化监控文件夹完成服务部署!

   最近在部署前端项目的时候,需要先将前端项目压缩包通过堡垒机上传到应用服务器的 /tmp 目录下,然后进入应用服务器中,使用 mv 命令将压缩文件移动到 Nginx 项目设定目录,最后使用 unz...

Python 2022.07.20 0 186

Python 构建 REST 风格接口 API

识别资源构建 REST API 时,要采取的第一步是确定 API 将管理的资源。通常将这些资源描述为复数名词,如customers 、events 、 或transactions 。在 Web 服务中...

Python 2022.06.24 0 366

发布评论

ainiaobaibaibaibaobaobeishangbishibizuichiguachijingchongjingdahaqiandaliandangaodw_dogedw_erhadw_miaodw_tuzidw_xiongmaodw_zhutouganbeigeiliguiguolaiguzhanghahahahashoushihaixiuhanheixianhenghorse2huaixiaohuatonghuaxinhufenjiayoujiyankeaikeliankouzhaokukuloukunkuxiaolandelinileimuliwulxhainiolxhlikelxhqiuguanzhulxhtouxiaolxhwahahalxhzanningwennonuokpinganqianqiaoqinqinquantouruoshayanshengbingshiwangshuaishuijiaosikaostar0star2star3taikaixintanshoutianpingtouxiaotuwabiweifengweiquweiwuweixiaowenhaowoshouwuxiangjixianhuaxiaoerbuyuxiaokuxiaoxinxinxinxinsuixixixuyeyinxianyinyueyouhenghengyuebingyueliangyunzanzhajizhongguozanzhoumazhuakuangzuohenghengzuoyi
支付宝
微信
赞助本站