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

气轻PyQt5 36 QChart坐标轴(QBarCategoryAxis)

2023-06-26 07:49 作者:气轻  | 我要投稿

 

将横纵坐标设置为QBarCategoryAxis,使得GDP数据与城市名对应。

 

from PyQt5.QtGui import *

from PyQt5.QtCore import *

from PyQt5.QtWidgets import *

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

from math import ceil

import sys

 

class PyQt536(QMainWindow):

    def __init__(self):

        super().__init__()

        self.initUI()

 

    def initUI(self):

        self.setWindowTitle("chart")

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

 

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

        gdpData  = [30319.98, 18809.64, 32679.87, 12820.4, 13509.15,

                    12001.52, 22859.35, 24221.98, 20363.19, 15342.77]

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

 

        chart = QChart()                                # 图表组件

 

        spline = QSplineSeries()                        # 样条曲线

        for i, value in enumerate(gdpData):

            spline.append(i, value)

 

 

        spline.setName("2018年部分城市GDP")

        spline.setColor(Qt.blue)

               

        chart.addSeries(spline)                         # 添加Series

 

        axis_x = QBarCategoryAxis()                     # 柱状图坐标

        axis_x.append(cityName)

        axis_x.setTitleText("城市")

        chart.addAxis(axis_x, Qt.AlignBottom)

        spline.attachAxis(axis_x)

 

        axis_y = QValueAxis()

        axis_y.setLabelFormat("%d")

        axis_y.setRange(0, MaxGDP)

        axis_y.setTitleText("亿元")

        chart.addAxis(axis_y, Qt.AlignLeft)

        spline.attachAxis(axis_y)

 

        chartView = QChartView()                        # 视图组件

        chartView.setChart(chart)                       # 显示chart

       

        self.setCentralWidget(chartView)

 

        self.show()

 

if __name__ == '__main__':

    app = QApplication(sys.argv)

    window = PyQt536()

    sys.exit(app.exec())

 

执行结果


气轻PyQt5 36 QChart坐标轴(QBarCategoryAxis)的评论 (共 条)

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