第12章 PyQtChart二维绘图
Charts是Qt的一个二维图表模块,可以绘制各种常见的二维图表,如折线图、柱状图、饼图、散点图、极坐标图等,功能比较全面,绘制的图形效果也比较美观,是用于数据二维可视化的有力工具。PyQtChart是Qt Charts模块的Python绑定,它需要单独安装。
本章首先介绍PyQtChart模块的基本特点和功能,以画折线图为例介绍用PyQtChart绘制一个二维图表的程序基本结构,以及一个图表的各组成部分的程序控制方法,然后介绍散点图、柱状图、饼图、蜡烛图等典型图表的绘制,还有图表框选缩放、左右双坐标轴、对数坐标轴、时间日期坐标轴等一些功能的实现。
12.1 PyQtChart概述
12.2 QChart绘制折线图
实例Demo12_2以绘制折线图为例,详细介绍图表各个部分的设置和操作,包括图表的标题、图例、边距等属性设置,QLineSeries序列的属性设置,QValueAxis坐标轴的属性设置等。程序运行时界面如图12-5所示。
图12-5 示例Demo12_2运行时界面
12.3 QChart绘图高级功能
本节再通过一个实例Demo12_3介绍绘制图表的一些高级和实用功能的实现,如通过鼠标拖放框选一个范围放大、显示鼠标处的坐标数值等。
图12-11 实例Demo12_3运行时界面
12.4 对数坐标轴和多坐标轴
本节通过实例Demo12_4演示如何使用对数坐标轴QLogValueAxis,以及如何在一个图表中附加左、右两个坐标轴,两个序列的纵轴分别使用左轴和右轴,但是共用底部的横轴。实例运行时界面如图12-13所示。
图12-13 示例Demo12_4运行时界面
12.5 饼图和各种柱状图
图12-15 实例Demo12_5运行时界面
图12-18 饼图绘图界面
12.6 蜡烛图和日期时间坐标轴
蜡烛图是股票等金融数据分析常用的一种图形,PyQtChart模块中用于绘制蜡烛图的序列类是QCandlestickSeries。实例Demo12_6使用QCandlestickSeries序列类绘制蜡烛图曲线,同时横坐标轴使用了日期时间坐标轴类QDateTimeAxis,可以方便地以日期时间数据作为坐标数据。实例Demo12_6运行时界面如图12-19所示。
图12-19 实例Demo12_6运行时界面
12.7 区域填充图
PyQtChart模块中的QAreaSeries是一个用于绘制区域填充图形的序列类。
图12-20 实例Demo12_7运行时界面
12.8 极坐标图
PyQtChart模块中绘制极坐标图要用到QPolarChart类,它的父类是QChart。所以,QPolarChart是一个图表类,而不是一个序列类。
在QPolarChart图上可以使用QLineSeries,QSplineSeries,QScatterSeries,QAreaSeries等序列类绘图,可以使用QValueAxis、QCategoryAxis等任何坐标轴类作为径向坐标轴或角度坐标轴。
实例Demo12_8使用QPolarChart和QSplineSeries绘制玫瑰线,径向坐标轴和角度坐标轴都使用QValueAxis坐标轴类。程序运行时界面如图12-23所示。
图12-23 实例Demo12_8运行时界面