商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > 使用PySide6的QtCharts模块制作三种常见统计图表的方法

使用PySide6的QtCharts模块制作三种常见统计图表的方法

  发布于2026-07-05 阅读(0)

扫一扫,手机访问

1. 引言

要说Python桌面开发,PySide6绝对是绕不开的一个选择。作为Qt官方的Python绑定库,它不光能搞定各种花哨的界面,还自带了QtCharts模块,能以原生渲染的方式画出质量很高的统计图表。跟Matplotlib这类第三方库一比,PySide6的图表在交互性、主题适配,尤其是嵌入桌面应用时的性能表现上,优势还是挺明显的。

这篇教程,就来聊聊怎么用PySide6做出三种最常用的统计图表:饼图、条形图和折线图。每个案例都配了完整的、可以直接跑起来的代码,目的就是让你能快速上手核心API。

环境准备:请确保已安装PySide6。

2. 饼图的制作方法及完整代码案例

饼图这东西,最适合展示各部分在整体中的占比关系。在PySide6里,核心就是QPieSeriesQPieSlice这两个类。

核心步骤

  1. 创建QPieSeries对象。
  2. append()方法往里添加标签和数值。
  3. 创建QChart,把Series加进去。
  4. 最后用QChartView展示图表。

完整代码案例

import sys
from PySide6.QtWidgets import QApplication, QMainWindow
from PySide6.QtCharts import QChart, QChartView, QPieSeries
from PySide6.QtGui import QPainter

class PieChartWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("PySide6 饼图示例")
        self.resize(600, 400)

        # 1. 创建饼图系列
        series = QPieSeries()
        series.append("Python", 45)
        series.append("C++", 25)
        series.append("Ja vaScript", 20)
        series.append("Go", 10)

        # 可选:设置某一块突出显示
        slice_obj = series.slices()[0]
        slice_obj.setExploded()
        slice_obj.setLabelVisible(True)

        # 2. 创建图表并添加系列
        chart = QChart()
        chart.addSeries(series)
        chart.setTitle("编程语言使用占比")
        chart.legend().setVisible(True)

        # 3. 创建视图
        chart_view = QChartView(chart)
        chart_view.setRenderHint(QPainter.RenderHint.Antialiasing)

        self.setCentralWidget(chart_view)

if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = PieChartWindow()
    window.show()
    sys.exit(app.exec())

使用PySide6的QtCharts模块制作三种常见统计图表的方法

3. 条形图的制作方法及完整代码案例

条形图,或者叫柱状图,用来对比不同类别的数值大小再合适不过了。PySide6里靠的是QBarSeriesQBarSetQBarCategoryAxis这几个家伙。

核心步骤

  1. 创建QBarSet来定义数据系列。
  2. 创建QBarSeries,把Set加进去。
  3. 配置X轴(类别轴)和Y轴(数值轴)。
  4. 把Series和Axis都绑定到QChart上。

完整代码案例

import sys
from PySide6.QtWidgets import QApplication, QMainWindow
from PySide6.QtCharts import (
    QChart, QChartView, QBarSeries, QBarSet,
    QBarCategoryAxis, QValueAxis
)
from PySide6.QtGui import QPainter, Qt

class BarChartWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("PySide6 条形图示例")
        self.resize(700, 450)

        # 1. 定义数据
        set1 = QBarSet("2023年")
        set2 = QBarSet("2024年")
        set1.append([10, 20, 30, 40])
        set2.append([15, 25, 35, 45])

        # 2. 创建条形图系列
        series = QBarSeries()
        series.append(set1)
        series.append(set2)

        # 3. 创建图表
        chart = QChart()
        chart.addSeries(series)
        chart.setTitle("季度销售额对比")
        chart.setAnimationOptions(QChart.AnimationOption.SeriesAnimations)

        # 4. 配置 X 轴(类别)
        categories = ["Q1", "Q2", "Q3", "Q4"]
        axis_x = QBarCategoryAxis()
        axis_x.append(categories)
        chart.addAxis(axis_x, Qt.AlignmentFlag.AlignBottom)
        series.attachAxis(axis_x)

        # 5. 配置 Y 轴(数值)
        axis_y = QValueAxis()
        axis_y.setTitleText("销售额 (万元)")
        chart.addAxis(axis_y, Qt.AlignmentFlag.AlignLeft)
        series.attachAxis(axis_y)

        chart.legend().setVisible(True)

        # 6. 创建视图
        chart_view = QChartView(chart)
        chart_view.setRenderHint(QPainter.RenderHint.Antialiasing)
        self.setCentralWidget(chart_view)

if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = BarChartWindow()
    window.show()
    sys.exit(app.exec())

使用PySide6的QtCharts模块制作三种常见统计图表的方法

4. 折线图的制作方法及完整代码案例

折线图是用来展示数据随时间或有序类别变化趋势的利器。核心类就是QLineSeries

核心步骤

  1. 创建QLineSeries,用append(x, y)方法往里加数据点。
  2. 创建QChart,把Series加进去。
  3. 配置坐标轴(X轴一般放类别或时间,Y轴放数值)。
  4. 最后用QChartView渲染出来。

完整代码案例

import sys
from PySide6.QtWidgets import QApplication, QMainWindow
from PySide6.QtCharts import QChart, QChartView, QLineSeries, QValueAxis
from PySide6.QtGui import QPainter
from PySide6.QtCore import Qt

class LineChartWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("PySide6 折线图示例")
        self.resize(700, 450)

        # 1. 创建折线系列
        series = QLineSeries()
        series.setName("用户增长")
        series.append(0, 100)
        series.append(1, 150)
        series.append(2, 180)
        series.append(3, 250)
        series.append(4, 320)
        series.append(5, 400)

        # 2. 创建图表
        chart = QChart()
        chart.addSeries(series)
        chart.setTitle("月度用户增长趋势")
        chart.setAnimationOptions(QChart.AnimationOption.SeriesAnimations)

        # 3. 配置坐标轴
        axis_x = QValueAxis()
        axis_x.setTitleText("月份")
        axis_x.setRange(0, 5)
        chart.addAxis(axis_x, Qt.AlignmentFlag.AlignBottom)
        series.attachAxis(axis_x)

        axis_y = QValueAxis()
        axis_y.setTitleText("用户数")
        axis_y.setRange(0, 500)
        chart.addAxis(axis_y, Qt.AlignmentFlag.AlignLeft)
        series.attachAxis(axis_y)

        chart.legend().setVisible(True)

        # 4. 创建视图
        chart_view = QChartView(chart)
        chart_view.setRenderHint(QPainter.RenderHint.Antialiasing)
        self.setCentralWidget(chart_view)

if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = LineChartWindow()
    window.show()
    sys.exit(app.exec())

使用PySide6的QtCharts模块制作三种常见统计图表的方法

5. 总结

通过这篇教程,我们基本掌握了用PySide6的QtCharts模块绘制三种基础图表的方法:

图表类型核心类适用场景
饼图QPieSeries展示部分与整体的比例关系
条形图QBarSeries, QBarSet对比不同类别的数值大小
折线图QLineSeries展示数据随时间/顺序的变化趋势

关键要点回顾

  1. 统一架构:所有图表都遵循 Series → Chart → ChartView 的三层结构,就像搭积木一样清晰。
  2. 坐标轴绑定:条形图和折线图需要手动创建坐标轴,并通过 attachAxis() 与 Series 关联起来,这一步别漏了。
  3. 抗锯齿:务必调用 setRenderHint(QPainter.RenderHint.Antialiasing),这能让图表看起来平滑很多,视觉效果直接提升一个档次。
  4. 动画支持:通过 setAnimationOptions() 可以为图表添加生动的过渡动画,数据变化时看起来更流畅。

说真的,PySide6的图表模块远不止这些。它还能支持散点图、面积图、极坐标图等多种类型,而且鼠标交互、缩放、自定义主题这些功能都做得不错。掌握了这三种基础图表,应付大多数数据可视化的场景应该问题不大,想继续深入探索的话,路也铺好了。

本文转载于:https://www.jb51.net/python/366593imq.htm 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注