pyqt5绘制精美的实时折线图例子
时间: 2023-04-12 11:00:34 浏览: 497
可以使用QChart和QChartView类来绘制实时折线图。以下是一个简单的例子:
```python
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QSizePolicy, QVBoxLayout, QHBoxLayout, QWidget, QPushButton
from PyQt5.QtChart import QChart, QChartView, QLineSeries
from PyQt5.QtCore import Qt, QRandomGenerator, QTimer
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
# 创建折线图
self.series = QLineSeries()
self.chart = QChart()
self.chart.addSeries(self.series)
self.chart.setTitle("Real-time Line Chart")
self.chart.createDefaultAxes()
# 创建图表视图
self.chart_view = QChartView(self.chart)
self.chart_view.setRenderHint(QPainter.Antialiasing)
# 创建按钮
self.start_button = QPushButton("Start")
self.stop_button = QPushButton("Stop")
# 创建布局
button_layout = QHBoxLayout()
button_layout.addWidget(self.start_button)
button_layout.addWidget(self.stop_button)
main_layout = QVBoxLayout()
main_layout.addWidget(self.chart_view)
main_layout.addLayout(button_layout)
# 创建主窗口
central_widget = QWidget()
central_widget.setLayout(main_layout)
self.setCentralWidget(central_widget)
# 连接按钮信号和槽函数
self.start_button.clicked.connect(self.start)
self.stop_button.clicked.connect(self.stop)
# 创建定时器
self.timer = QTimer()
self.timer.setInterval(1000)
self.timer.timeout.connect(self.update_chart)
def start(self):
self.timer.start()
def stop(self):
self.timer.stop()
def update_chart(self):
# 生成随机数
value = QRandomGenerator.global_().bounded(100)
# 添加数据点
self.series.append(self.series.count(), value)
# 移动X轴
self.chart.scroll(self.chart.plotArea().width() / self.series.count(), 0)
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
```
这个例子使用QLineSeries类来存储数据,并使用QChart类来绘制折线图。定时器每秒钟更新一次数据,然后将数据添加到折线图中。注意,这个例子只是一个简单的演示,实际应用中可能需要更复杂的逻辑来处理数据。
阅读全文