发布于2026-07-05 阅读(0)
扫一扫,手机访问
要说Python桌面开发,PySide6绝对是绕不开的一个选择。作为Qt官方的Python绑定库,它不光能搞定各种花哨的界面,还自带了QtCharts模块,能以原生渲染的方式画出质量很高的统计图表。跟Matplotlib这类第三方库一比,PySide6的图表在交互性、主题适配,尤其是嵌入桌面应用时的性能表现上,优势还是挺明显的。
这篇教程,就来聊聊怎么用PySide6做出三种最常用的统计图表:饼图、条形图和折线图。每个案例都配了完整的、可以直接跑起来的代码,目的就是让你能快速上手核心API。
环境准备:请确保已安装PySide6。
饼图这东西,最适合展示各部分在整体中的占比关系。在PySide6里,核心就是QPieSeries和QPieSlice这两个类。
QPieSeries对象。append()方法往里添加标签和数值。QChart,把Series加进去。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里靠的是QBarSeries、QBarSet和QBarCategoryAxis这几个家伙。
QBarSet来定义数据系列。QBarSeries,把Set加进去。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())

折线图是用来展示数据随时间或有序类别变化趋势的利器。核心类就是QLineSeries。
QLineSeries,用append(x, y)方法往里加数据点。QChart,把Series加进去。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模块绘制三种基础图表的方法:
| 图表类型 | 核心类 | 适用场景 |
|---|---|---|
| 饼图 | QPieSeries | 展示部分与整体的比例关系 |
| 条形图 | QBarSeries, QBarSet | 对比不同类别的数值大小 |
| 折线图 | QLineSeries | 展示数据随时间/顺序的变化趋势 |
Series → Chart → ChartView 的三层结构,就像搭积木一样清晰。attachAxis() 与 Series 关联起来,这一步别漏了。setRenderHint(QPainter.RenderHint.Antialiasing),这能让图表看起来平滑很多,视觉效果直接提升一个档次。setAnimationOptions() 可以为图表添加生动的过渡动画,数据变化时看起来更流畅。说真的,PySide6的图表模块远不止这些。它还能支持散点图、面积图、极坐标图等多种类型,而且鼠标交互、缩放、自定义主题这些功能都做得不错。掌握了这三种基础图表,应付大多数数据可视化的场景应该问题不大,想继续深入探索的话,路也铺好了。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8