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

气轻PyQt5 42 QChart动画模式(Animation)

2023-07-27 07:45 作者:气轻  | 我要投稿

 

from PyQt5.QtGui import *

from PyQt5.QtCore import *

from PyQt5.QtWidgets import *

from PyQt5.QtChart import QSplineSeries, QLineSeries, QChart, QChartView, QValueAxis, QBarCategoryAxis

import numpy as np

from math import ceil, floor

import sys

 

class PyQt538(QMainWindow):

    def __init__(self):

        super().__init__()

        self.initUI()

 

    def initUI(self):

        self.setWindowTitle("chart")

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

 

        cityName = ['北京', '天津', '上海', '南京', '杭州', '青岛', '广州', '深圳', '重庆', '成都']

        yearData = ['2018', '2017'];

        gdpData=np.array([[30319.98, 28014.94],

                          [18809.64, 18549.19],

                          [32679.87, 30632.99],

                          [12820.40, 11715.10],

                          [13509.15, 12603.36],

                          [12001.52, 11037.28],

                          [22859.35, 21503.15],

                          [24221.98, 22490.06],

                          [20363.19, 19424.73],

                          [15342.77, 13889.39]])

        MaxGDP = ceil(gdpData.max()/9)*10

        MinGDP = floor(gdpData.min()/10)*8

 

        chart = QChart()                                # 图表组件

        chart.setTitle("部分城市GDP")

 

        chart.setAnimationOptions(QChart.SeriesAnimations)

        chart.setAnimationDuration(500)                 # 动画持续时间msecs

        chart.setAnimationEasingCurve(QEasingCurve.OutCirc)

        chart.legend().show()

 

        spline18 = self.addSpline(gdpData[:,0],'#FFA500','2018');

        spline17 = self.addSpline(gdpData[:,1],'#00A5FF','2017');

 

        chart.addSeries(spline18)                       # 添加Series

        chart.addSeries(spline17)                       # 添加Series

 

        penx = QPen(QColor(0x1E90FF))                   # X轴颜色

        penx.setWidth(2)                                # X轴宽度

        axis_x = QBarCategoryAxis()                     # 柱状图坐标

        axis_x.append(cityName)

        axis_x.setLinePen(penx)                         # 设置X轴颜色和宽度

        axis_x.setRange(cityName[0], cityName[-1])

 

        axis_x.setTitleText("城市")

        chart.addAxis(axis_x, Qt.AlignBottom)

        spline18.attachAxis(axis_x)

        spline17.attachAxis(axis_x)

 

        peny = QPen(QColor(0x8B7500))                   # Y轴颜色

        peny.setWidth(2)                                # Y轴宽度

        axis_y = QValueAxis()

        axis_y.setLabelFormat("%d")

        axis_y.setRange(0, MaxGDP)

        axis_y.setTitleText("亿元")

        axis_y.setLinePen(peny)                         # 设置Y轴颜色和宽度

        axis_y.setRange(MinGDP, MaxGDP)

        chart.addAxis(axis_y, Qt.AlignLeft)

        spline18.attachAxis(axis_y)

        spline17.attachAxis(axis_y)

 

        chartView = QChartView()                        # 视图组件

        chartView.setChart(chart)                       # 显示chart

       

        self.setCentralWidget(chartView)

 

        self.show()

 

    def addSpline(self,points,color,lineName):

 

        pens = QPen(QColor(color),3)                    # 曲线颜色

        spline = QSplineSeries()                        # 样条曲线

        for i, value in enumerate(points):

            spline.append(i, value)

 

        spline.setName(lineName)

        spline.setColor(Qt.blue)

        spline.setPointsVisible(True)                   # 数据点可视

        spline.setPen(pens)                             # 设置曲线颜色和宽度

 

        return spline

 

if __name__ == '__main__':

    app = QApplication(sys.argv)

    window = PyQt538()

    sys.exit(app.exec())


气轻PyQt5 42 QChart动画模式(Animation)的评论 (共 条)

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