欢迎光临散文网 会员登陆 & 注册

气轻PyQt5 44 QChart饼状图切片强调

2023-08-07 08:58 作者:气轻  | 我要投稿

 

from PyQt5 import QtGui

from PyQt5.QtCore import *

from PyQt5.QtWidgets import *

from PyQt5.QtChart import QPieSlice, QChart, QChartView, QPieSeries

import numpy as np

import sys

 

class PyQt543(QMainWindow):

    def __init__(self):

        super().__init__()

        self.initUI()

 

    def initUI(self):

        self.setWindowTitle("chart")

        self.resize(600, 400)                           # 设置窗口大小

 

        cityName = ['北京', '天津', '上海', '南京', '杭州',

                    '青岛', '广州', '深圳', '重庆', '成都']

        color    = ['#6495ED', '#548B54', '#483D8B', '#00FF7F', '#7B68EE',

                    '#00CD66', '#556B2F', '#EEDC82', '#FFD700', '#CD950C']

        gdpData  = np.array([30319.98, 18809.64, 32679.87, 12820.4, 13509.15,

                    12001.52, 22859.35, 24221.98, 20363.19, 15342.77])

        proportion = np.array( gdpData * 100 / gdpData.sum(),dtype=int )

 

        chart = QChart()                                # 图表组件

        chart.setTitle('GDP饼状图')

 

        series = QPieSeries()                           # 饼状图

        for i, value in enumerate(gdpData):             # 添加数据

            series.append(cityName[i], proportion[i])

 

        slice = QPieSlice()                             # 饼状图中的切片

        for i, city in enumerate(cityName):

            slice = series.slices()[i]

            slice.setLabelVisible(True)                 # 切片标签可视

            slice.setLabel("{} {:.1f}%".format(city,100 * slice.percentage()))

 

            slice.setBrush(QtGui.QColor(color[i]))

 

        slice0 = series.slices()[4]

        slice0.setExploded()                            # 切片强调

       

        chart.legend().hide()

        chart.addSeries(series)                         # 添加Series

 

        chartView = QChartView()                        # 视图组件

        chartView.setChart(chart)                       # 显示chart

       

        self.setCentralWidget(chartView)

 

        self.show()

 

if __name__ == '__main__':

    app = QApplication(sys.argv)

    window = PyQt543()

    sys.exit(app.exec())

 

执行结果


气轻PyQt5 44 QChart饼状图切片强调的评论 (共 条)

分享到微博请遵守国家法律