气轻PyQt5 44 QChart饼状图切片强调
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())
执行结果
