pyqtchart动态绘制曲线
时间: 2023-09-28 07:09:42 浏览: 36
PyQtChart是PyQt5的一个模块,用于绘制图表和图形。要动态绘制曲线,可以使用QLineSeries类和QChart类。下面是一个简单的示例代码,可以动态绘制正弦曲线:
```python
import sys
from PyQt5.QtChart import QChart, QChartView, QLineSeries
from PyQt5.QtCore import QPointF, Qt
from PyQt5.QtGui import QPainter
from PyQt5.QtWidgets import QApplication, QMainWindow
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
# 创建一个QLineSeries对象,并添加数据
self.series = QLineSeries()
for i in range(360):
x = i
y = math.sin(math.radians(i))
self.series.append(x, y)
# 创建一个QChart对象,并将QLineSeries添加到其中
self.chart = QChart()
self.chart.addSeries(self.series)
self.chart.setTitle("Sine Curve")
self.chart.createDefaultAxes()
# 创建一个QChartView对象,并设置其属性
self.chartView = QChartView(self.chart)
self.chartView.setRenderHint(QPainter.Antialiasing)
# 将QChartView设置为MainWindow的中心部件
self.setCentralWidget(self.chartView)
# 设置定时器,每隔一段时间更新曲线数据
self.timer = QTimer()
self.timer.setInterval(50)
self.timer.timeout.connect(self.updateData)
self.timer.start()
def updateData(self):
# 移除原有的数据
self.series.clear()
# 添加新的数据
for i in range(360):
x = i
y = math.sin(math.radians(i + self.offset))
self.series.append(x, y)
# 更新QChart对象
self.chart.removeAllSeries()
self.chart.addSeries(self.series)
self.chart.createDefaultAxes()
self.chart.setTitle("Sine Curve")
# 更新视图
self.chartView.update()
# 增加偏移量
self.offset += 1
if __name__ == "__main__":
app = QApplication(sys.argv)
mainWindow = MainWindow()
mainWindow.show()
sys.exit(app.exec_())
```
在这个示例中,我们创建了一个QLineSeries对象,并添加了一些正弦函数的数据。然后,我们创建了一个QChart对象,并将QLineSeries添加到其中。接下来,我们创建了一个QChartView对象,并将其设置为MainWindow的中心部件。最后,我们设置了一个定时器,在每个时间间隔内更新曲线数据,并更新QChart对象和视图。