当前位置: 首页 > news >正文

PyQt 使用QChartView绘制极坐标图(QPolarChart)详解

PyQt 使用QChartView绘制极坐标图(QPolarChart)详解

  • 一、工程搭建
  • 二、QPolarChart详解
    • 1、核心特性
    • 2、属性与方法表格
    • 3、关键功能说明
    • 4、完整示例代码
    • 5、注意事项
  • 三、代码示例
    • 1、示例代码
    • 2、效果展示

一、工程搭建

pyqt6QtCharts模块需要单独安装,只安装pyqt6是不包含图表功能的。

二、QPolarChart详解

QPolarChart是 PyQt6 中用于绘制极坐标图表的组件,继承自QChart。它支持在极坐标系中可视化数据,适用于展示周期性或方向性数据(如雷达图)。

1、核心特性

  1. 坐标系
    • 角度轴(Angular Axis):范围通常为[ 0 ∘ , 360 ∘ ) [0^\circ, 360^\circ)[0,360)
    • 径向轴(Radial Axis):数值范围可自定义
  2. 数据序列
    • 支持QLineSeriesQScatterSeriesQSplineSeries
  3. 交互功能
    • 缩放、平移、图例交互

2、属性与方法表格

类别名称类型说明
属性angularAxisQValueAxis角度轴对象
radialAxisQValueAxis径向轴对象
titlestr图表标题
方法addSeries(series)void添加数据序列
removeSeries(series)void移除数据序列
series()list获取所有序列
setAngularAxis(axis)void设置角度轴
setRadialAxis(axis)void设置径向轴
createDefaultAxes()void创建默认坐标轴
zoomIn()void放大视图
zoomOut()void缩小视图
zoomReset()void重置缩放
setTheme(theme)void设置主题(如QChart.ChartThemeLight

3、关键功能说明

  1. 设置坐标轴范围

    angular_axis=QValueAxis()angular_axis.setRange(0,360)# 角度范围radial_axis=QValueAxis()radial_axis.setRange(0,100)# 径向范围chart.setAngularAxis(angular_axis)chart.setRadialAxis(radial_axis)
  2. 添加数据序列

    series=QLineSeries()series.append(30,50)# (角度, 径向值)series.append(90,70)chart.addSeries(series)
  3. 主题与样式

    chart.setTheme(QChart.ChartThemeBlueIcy)chart.legend().setVisible(True)

4、完整示例代码

importsysfromPyQt6.QtWidgetsimportQApplication,QMainWindow,QVBoxLayout,QWidgetfromPyQt6.QtChartsimport(QChart,QChartView,QPolarChart,QLineSeries,QValueAxis,QCategoryAxis)fromPyQt6.QtGuiimportQPainter,QColor,QFont,QPenfromPyQt6.QtCoreimportQtfromPyQt6.QtWidgetsimportQApplication,QMainWindowfromPyQt6.QtChartsimportQChartView,QPolarChart,QValueAxis,QLineSeries app=QApplication([])window=QMainWindow()# 创建极坐标图表chart=QPolarChart()chart.setTitle("雷达图示例")# 设置坐标轴angular_axis=QValueAxis()angular_axis.setRange(0,360)radial_axis=QValueAxis()radial_axis.setRange(0,100)chart.addAxis(angular_axis,QPolarChart.PolarOrientation.PolarOrientationRadial)chart.addAxis(radial_axis,QPolarChart.PolarOrientation.PolarOrientationAngular)# 添加数据series=QLineSeries()series.append(0,30)series.append(90,80)series.append(180,60)series.append(270,40)series.append(360,30)chart.addSeries(series)series.attachAxis(angular_axis)series.attachAxis(radial_axis)# 显示图表chart_view=QChartView(chart)window.setCentralWidget(chart_view)window.resize(800,600)window.show()app.exec()

5、注意事项

  1. 角度单位默认为(非弧度)
  2. 径向轴支持负值(如− 100 -100100100 100100
  3. 多序列时需确保坐标轴范围覆盖所有数据

三、代码示例

1、示例代码

importsysfromPyQt6.QtWidgetsimportQApplication,QMainWindow,QVBoxLayout,QWidgetfromPyQt6.QtChartsimport(QChart,QChartView,QPolarChart,QLineSeries,QValueAxis,QCategoryAxis)fromPyQt6.QtGuiimportQPainter,QColor,QFont,QPenfromPyQt6.QtCoreimportQtclassPolarChartWindow(QMainWindow):def__init__(self):super().__init__()self.setWindowTitle("PyQt6 极坐标图(雷达图)示例")self.resize(900,700)# 布局central_widget=QWidget()self.setCentralWidget(central_widget)layout=QVBoxLayout(central_widget)layout.setContentsMargins(20,20,20,20)# ========================# 极坐标图表(核心)# ========================chart=QPolarChart()chart.setTitle("多维度能力评估 - 极坐标雷达图")chart.setTitleFont(QFont("Microsoft YaHei",14,QFont.Weight.Bold))chart.setAnimationOptions(QChart.AnimationOption.SeriesAnimations)chart.legend().setVisible(True)chart.legend().setAlignment(Qt.AlignmentFlag.AlignBottom)# ========================# 数据系列 A# ========================series1=QLineSeries()series1.setName("产品A")data1=[(0,8),(45,9),(90,7),(135,6),(180,8),(225,9),(270,7),(315,6),(360,8)]forpindata1:series1.append(p[0],p[1])pen1=QPen(QColor("#2E86AB"))pen1.setWidth(3)series1.setPen(pen1)series1.setBrush(QColor(46,134,171,70))# ========================# 数据系列 B# ========================series2=QLineSeries()series2.setName("产品B")data2=[(0,6),(45,7),(90,9),(135,8),(180,5),(225,6),(270,8),(315,9),(360,6)]forpindata2:series2.append(p[0],p[1])pen2=QPen(QColor("#F24236"))pen2.setWidth(3)series2.setPen(pen2)series2.setBrush(QColor(242,66,54,70))chart.addSeries(series1)chart.addSeries(series2)# ========================# 坐标轴(PyQt6 正确用法!)# ========================# 径向轴(半径)axis_r=QValueAxis()axis_r.setRange(0,10)axis_r.setTickCount(6)axis_r.setLabelFormat("%.0f")# 角度轴(环形方向)axis_a=QCategoryAxis()labels=["能力","速度","稳定性","续航","散热","颜值","手感","音质"]fori,nameinenumerate(labels):axis_a.append(name,i*45)axis_a.setRange(0,360)# ✅ PyQt6 正确绑定极坐标轴(无任何枚举错误)chart.addAxis(axis_r,QPolarChart.PolarOrientation.PolarOrientationRadial)chart.addAxis(axis_a,QPolarChart.PolarOrientation.PolarOrientationAngular)series1.attachAxis(axis_r)series1.attachAxis(axis_a)series2.attachAxis(axis_r)series2.attachAxis(axis_a)# ========================# 图表视图# ========================chart_view=QChartView(chart)chart_view.setRenderHint(QPainter.RenderHint.Antialiasing)layout.addWidget(chart_view)if__name__=="__main__":app=QApplication(sys.argv)window=PolarChartWindow()window.show()sys.exit(app.exec())

2、效果展示


http://www.jsqmd.com/news/571857/

相关文章:

  • 2026年农用EM菌厂家推荐:种植/水产/发酵剂/功能菌专业供应,如何科学选型不踩坑? - 品牌推荐官
  • 04动态规划
  • cool-admin(midway版)前端路由动画:实现与优化
  • Qwen1.5-1.8B-Chat-GPTQ-Int4开源大模型:vLLM在Kubernetes集群中的水平扩缩容实践
  • Pixel Language Portal 低代码平台集成:在 Dify 中快速构建像素语言应用
  • 基于 LLM 的金融文本分类实战:In-Context Learning 少样本落地(Qwen2.5+Ollama)
  • Flutter 实战避坑:相册页二次刷新被清空、全屏图片拉伸、ML Kit 人脸检测最小尺寸问题
  • 再议高中阶段的换元法 (上)
  • AtomGit「码动四季·开源同行」征稿活动来了,开源入门赛道怎么写更容易脱颖而出
  • python3中pyarrow库介绍和基础使用
  • 3步让Fiji在macOS上稳定运行:从启动崩溃到顺畅启动的完整指南
  • SingleFile:保存完整网页的终极解决方案
  • Lingbot-Depth-Pretrain-Vitl-14 在医疗影像的潜在应用:手术场景深度感知辅助
  • 3步突破AI编程助手限制:免费解锁Cursor Pro高级功能全指南
  • AutoGen Studio在内容创作领域的应用:自动化文案生成
  • 告别游戏本性能枷锁:OmenSuperHub的硬件轻控方案
  • 教程创作加速器:用快马平台秒建Vue3项目原型,专注编写安装指南
  • 2026年,探寻市场口碑佳的高压电磁阀靠谱工厂
  • 树莓派新手必看:保姆级vim安装与配置指南(含国内源切换和常见报错解决)
  • 企业数据安全新选择:手把手教你用Open Notebook搭建私有知识库,支持PDF/Word多格式导入
  • 在QT中将多个项目(同代码不同ui和资源文件)合并
  • DeepSeek-Coder-V2:打破闭源垄断,开启开源代码智能新时代的终极指南
  • SpringSecurity多认证方案配置实战:DelegatingAuthenticationEntryPoint的灵活运用
  • 我爱学算法之——动态规划(三)
  • 【Openlayers】突破天地图缩放限制:自定义TileGrid实现18级以上影像平滑展示
  • 5个Reloadium高级调试技巧:帧重载、错误处理和闭包调试终极指南
  • 2026年行业推荐的几个高品质柔性无尘拖链品牌厂家榜单
  • w3x2lni:魔兽地图跨版本兼容解决方案技术指南
  • HoRain云--Vue3样式绑定终极指南
  • JetBrains IDE试用期管理工具:技术解析与实践指南