在PyQt5中,有一个轻量级的图表绘制库PyQtChart, 该模块提供了一组易于使用的图表组件。它使用Qt Graphics View Framework,因此图表可以轻松集成到用户界面中。PyQtChart未包含在PyQt缺省的安装包中,要使用它,需要另行安装,运行命令:
pip install PyQtChart
安装该模块, 就可以使用了。
在一个图表程序中通常包含三个基本构成部分:
QChart它管理不同类型系列和其他与图表相关的对象(如图例和轴)的图形表示。
QChartView是一个独立的部件,它可以显示图表。其常用函数有:
枚举QChartView.RubberBand取值及含义:
QChart类管理一系列的图表,图例和坐标轴的图形表示。QChart是一个QGraphicsWidget,可以在QGraphicsScene中显示。它管理不同类型系列和其他与图表相关的对象(如图例和轴)的图形表示。为了仅在布局中显示图表,可以使用类QChartView代替QChart。此外,通过使用QPolarChart类,可以将折线,样条曲线,面积和散布序列表示为极坐标图。
QChart的常用函数:
QChart的常用信号:
QLineSeries类将数据显示成折线图。折线图是将一系列数据点显示为通过直线连接的折线创建一个基本的折线代码如下:
- series = QLineSeries()
- series.append(0, 6)
- series.append(2, 4)
- ...
- chart.addSeries(series)
测试样例绘制了一个简单的折线图,完整代码如下:
- import sys
- from PyQt5.QtGui import QPainter
- from PyQt5.QtWidgets import QApplication, QMainWindow
- from PyQt5.QtChart import QChart, QChartView, QLineSeries
-
- class DemoChartLineSeries(QMainWindow):
- def __init__(self, parent=None):
- super(DemoChartLineSeries, self).__init__(parent)
-
- # 设置窗口标题
- self.setWindowTitle('实战 Qt for Python: QChart折线图演示')
- # 设置窗口大小
- self.resize(480, 360)
-
- self.createChart()
-
- def createChart(self):
-
- #设置折线数据
- lineSeries = QLineSeries()
- lineSeries.append(0, 6)
- lineSeries.append(2, 4)
- lineSeries.append(3, 8)
- lineSeries.append(7, 4)
- lineSeries.append(10, 5)
- lineSeries.append(11, 1)
- lineSeries.append(13, 3)
- lineSeries.append(17, 6)
- lineSeries.append(18, 3)
- lineSeries.append(20, 2)
-
- #创建图表
- chart = QChart()
- chart.legend().hide()
- chart.addSeries(lineSeries)
- chart.createDefaultAxes()
- chart.setTitle('一个简单的折线图示例')
-
- #图表视图
- chartView = QChartView(chart)
- chartView.setRenderHint(QPainter.Antialiasing)
-
- self.setCentralWidget(chartView)
-
-
- if __name__ == '__main__':
- app = QApplication(sys.argv)
- window = DemoChartLineSeries()
- window.show()
- sys.exit(app.exec())
- window = DemoChartLineSeries()
- window.show()
- sys.exit(app.exec())
在Windows系统下的运行效果如下图:
折线图示例(Windows系统)
在Ubuntu系统下的运行效果如下图:
折线图示例(Ubuntu系统)