PySide下使用 Qchart制作柱状图

目录

一、利用Qchart生成柱状图

1、示例代码如下:

2、图表与显示数据不符原因

二、在柱状图中显示每个柱子的数值和颜色

1、显示柱子的数值

2、设置显示字的颜色

3、设置图例的颜色


一、利用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') # 设置图例字体颜色

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值