气轻PyQt5 36 QChart坐标轴(QBarCategoryAxis)
将横纵坐标设置为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())
执行结果
