目录
一、利用Qchart生成柱状图
创建思路:
1、创建柱状条对象QBarSet,并添加数据
2、创建柱状图组QBarSeries
3、将柱状对象添加到柱状图组中
4、创建QChart图表对象
5、将柱状图组再添加到Qchart图表中
6、设置X,Y轴
7、将Qchart图表在QChartView窗口中展示
1、示例代码如下:
import sys
from PySide6.QtGui import QPainter, QPen
from PySide6.QtCore import Qt
from PySide6.QtWidgets import QApplication, QMainWindow
from PySide6.QtCharts import (QChartView, QChart, QBarSeries, QBarSet,
QLegend, QBarCategoryAxis, QValueAxis)
class DemoChartBarSeries(QMainWindow):
def __init__(self, parent=None):
super(DemoChartBarSeries, self).__init__(parent)
# 设置窗口标题
self.setWindowTitle('实战 Qt for Python: QChart柱状图演示')
# 设置窗口大小
self.resize(480, 360)
self.create_room_garph()
# 生成图表
def create_room_garph(self):
# 创建条状单元
room_barset = QBarSet('现有机房量')
use_room_barset = QBarSet('使用机房量')
# 设置条状单元数据
room_barset.append([2])
use_room_barset.append([8])
# 创建条状图组
barseries = QBarSeries()
# 将条状单元加入到条状图中
barseries.append(room_barset)
barseries.append(use_room_barset)
# 创建图表
chart = QChart()
chart.setTitle('简单柱状图示例')
chart.addSeries(barseries)
chart.setAnimationOptions(QChart.SeriesAnimations) # 设置成动画显示
# 设置X轴 名称
axis_x = QBarCategoryAxis()
axis_x.append(['机房'])
chart.addAxis(axis_x,Qt.AlignBottom)
barseries.attachAxis(axis_x)
# 设置Y轴 数值
axis_y = QValueAxis()
axis_y.setLabelFormat('%d') # 以整型显示刻度
axis_y.setRange(1,20)
# axis_y.setTickCount(7)
chart.addAxis(axis_y,Qt.AlignLeft)
barseries.attachAxis(axis_y)
chart.legend().setVisible(True) # 显示图例,默认为显示
chart.legend().setAlignment(Qt.AlignBottom) # 在底部显示图例信息
# 将柱状图添加到图表展示窗口中
chartView = QChartView(chart)
# chartView.setRenderHint(QPainter.Antialiasing)
self.setCentralWidget(chartView)
if __name__ == '__main__':
app = QApplication(sys.argv)
window = DemoChartBarSeries()
window.show()
sys.exit(app.exec())
2、图表与显示数据不符原因
chart.addSeries(barseries) 必须在x,y轴设置前设置,否则产生的数据在X/Y轴上显示不准。
二、在柱状图中显示每个柱子的数值和颜色
1、显示柱子的数值
需要导入from PySide6.QtCharts importQAbstractBarSeries 包
代码如下:
# 设置在柱状图中显示数值
barseries.setLabelsVisible(True) # 显示数据
barseries.setLabelsPosition(QAbstractBarSeries.LabelsInsideEnd) # 如不设置此行,默认显示在柱子中间位置
QAbstractBarSeries.LabelsCenter 标签位于栏的中心。
QAbstractBarSeries.LabelsInsideEnd 标签位于顶部的栏内。
QAbstractBarSeries.LabelsInsideBase 标签位于底部的栏内。
QAbstractBarSeries.LabelsOutsideEnd 标签位于顶部栏的外部。
2、设置显示字的颜色
柱子内字体颜色默认为白色,修改颜色需要在barset中进行设置
# 对字体颜色进行设置 cabinet_barset.setLabelColor('blue') use_cabinet_barset.setLabelColor('blue')
3、设置图例的颜色
图例的颜色需要在QChart对象中中进行设置
cabinet_chart.legend().setLabelColor('#1E90FF') # 设置图例字体颜色