用PyQt5.QtChart实现动态曲线图
时间: 2023-10-29 08:07:47 浏览: 265
PyQt5.QtChart 是 PyQt5 中的一个模块,它提供了一些强大的图表组件,可以帮助我们快速实现各种类型的图表,包括动态曲线图。
下面是一个简单的示例,演示如何使用 PyQt5.QtChart 实现动态曲线图:
```python
from PyQt5.QtWidgets import QApplication, QMainWindow, QGridLayout, QWidget
from PyQt5.QtChart import QChart, QChartView, QLineSeries
from PyQt5.QtCore import Qt, QTimer
import random
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
# 创建曲线图和曲线
self.chart = QChart()
self.series = QLineSeries()
self.chart.addSeries(self.series)
# 设置图表标题和坐标轴标签
self.chart.setTitle("Dynamic Curve")
self.chart.setAnimationOptions(QChart.SeriesAnimations)
self.chart.createDefaultAxes()
self.chart.axes()[0].setTitleText("X")
self.chart.axes()[1].setTitleText("Y")
# 创建图表视图
self.chart_view = QChartView(self.chart)
self.chart_view.setRenderHint(QPainter.Antialiasing)
# 创建布局并添加图表视图
layout = QGridLayout()
layout.addWidget(self.chart_view)
# 创建窗口并设置布局
central_widget = QWidget()
central_widget.setLayout(layout)
self.setCentralWidget(central_widget)
# 创建定时器并连接到更新函数
self.timer = QTimer(self)
self.timer.timeout.connect(self.update_plot)
self.timer.start(50)
# 初始化计数器和数据列表
self.count = 0
self.data = []
def update_plot(self):
# 更新计数器和数据列表
self.count += 1
self.data.append(random.randint(0, 100))
# 更新曲线数据
self.series.clear()
for i in range(len(self.data)):
self.series.append(i, self.data[i])
# 设置坐标轴范围
self.chart.axisX().setRange(max(0, self.count-100), self.count)
self.chart.axisY().setRange(0, 100)
if __name__ == '__main__':
app = QApplication([])
window = MainWindow()
window.show()
app.exec_()
```
在这个例子中,我们创建了一个 QMainWindow 窗口,并在其中添加了一个 QChartView 视图,用于显示动态曲线图。我们还创建了一个 QTimer 定时器,并将其连接到 update_plot() 函数,以定期更新曲线图的数据。
在 update_plot() 函数中,我们生成一个随机数,并将其添加到数据列表中。然后,我们清除曲线的所有数据,重新将数据添加到曲线中。最后,我们根据数据的数量调整坐标轴的范围。
请注意,我们使用了一个计数器来记录数据的数量,以便我们可以根据需要滚动我们的曲线图。在这个例子中,我们每次只显示最近的 100 个数据点。
运行这个示例程序,你将会看到一个动态曲线图,显示随机生成的数值。
阅读全文