气轻PyQt5 39 QChart柱状图(QBarSet)
在【气轻Python34】采用matplotlib制作过同样数据的柱状图。
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtChart import QBarSeries, QBarSet, QChart, QChartView, QValueAxis, QBarCategoryAxis
from math import ceil
import sys
class PyQt539(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() # 图表组件
pen = QPen(QColor('#8B000'),3) # 曲线颜色
GDPBar = QBarSet('2018年部分城市GDP')
for i, value in enumerate(gdpData):
GDPBar.append(value)
barSeries = QBarSeries()
barSeries.append(GDPBar)
chart.addSeries(barSeries)
axis_x = QBarCategoryAxis() # 柱状图坐标
axis_x.append(cityName)
axis_x.setLinePen(pen) # 设置X轴颜色和宽度
axis_x.setTitleText("城市")
chart.addAxis(axis_x, Qt.AlignBottom)
barSeries.attachAxis(axis_x)
axis_y = QValueAxis()
axis_y.setLabelFormat("%d")
axis_y.setRange(0, MaxGDP)
axis_y.setTitleText("亿元")
chart.addAxis(axis_y, Qt.AlignLeft)
axis_y.setLinePen(pen) # 设置Y轴颜色和宽度
barSeries.attachAxis(axis_y)
chartView = QChartView() # 视图组件
chartView.setChart(chart) # 显示chart
self.setCentralWidget(chartView)
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
window = PyQt539()
sys.exit(app.exec())
执行结果
