氣輕PyQt5 44 QChart餅狀圖切片強(qiáng)調(diào)
?
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)?????????????????????????? # 設(shè)置窗口大小
?
???? ???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):???????????? # 添加數(shù)據(jù)
??????????? series.append(cityName[i], proportion[i])
?
??????? slice = QPieSlice()???????????????????????????? # 餅狀圖中的切片
??????? for i, city in enumerate(cityName):
??????????? slice = series.slices()[i]
??????????? slice.setLabelVisible(True)???????????????? # 切片標(biāo)簽可視
??????????? slice.setLabel("{} {:.1f}%".format(city,100 * slice.percentage()))
?
??????????? slice.setBrush(QtGui.QColor(color[i]))
?
??????? slice0 = series.slices()[4]
??????? slice0.setExploded()??????????????????????????? # 切片強(qiáng)調(diào)
???????
??????? 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())
?
執(zhí)行結(jié)果
