pyqtgraph 画股票分时图, 每天分时有240分钟数据, 但是早上9.30开盘后 ,数据并不是一次就有240个数据, 每分钟增加一个, 我想固定长度240, 没增加一分钟,添加一个数据显示
时间: 2024-10-21 16:12:58 浏览: 33
PyQtGraph是一个强大的Python库,用于创建交互式图表和可视化的应用程序。如果你想要在PyQtGraph中绘制股票分时图,并且由于实时数据的特性,数据不是一次性提供完整240分钟的,而是每分钟动态增加,你可以采用循环和追加数据点的方式来实现。
首先,你需要设置一个列表或数组来存储每天的数据,初始长度为240,然后利用一个定时器每隔一分钟检查是否有新的数据。如果有的话,你就将这个新数据插入到对应的时间位置。这里是一个简单的步骤概述:
1. 初始化一个空列表`data_points`,长度为240。
2. 定义一个`timer`变量,使用`pyqtgraph.QtCore.QTimer`实例化并设置定时间隔(例如60秒)。
3. 创建一个槽函数(slot function),如`update_data(point)`,在这个函数里,当你收到新的数据时,检查其时间是否已经在`data_points`内。如果是,则更新相应位置;如果不是,将它添加到列表末尾。
4. 设置定时器开始工作,在每次触发时执行`update_data`函数,传递最新的数据。
5. 使用`plot()`函数在PyQtGraph的窗口中展示`data_points`,可以设置线型、颜色等属性以便清晰地表示分时变化。
```python
import sys
from PyQt5.QtWidgets import QApplication
from PyQt5.QtCore import QTimer
import numpy as np
from pyqtgraph.Qt import QtGui
from pyqtgraph.plotting import PlotWidget
# 假设你的实时数据源会返回一个字典,包含时间戳和价格
def update_data(new_point):
# 将字典转换成时间和价格
timestamp, price = new_point['timestamp'], new_point['price']
# 获取当前数据列表索引,对应实际时间
index = int(timestamp / 60) # 假设每个时间单位是分钟
if index < len(data_points):
data_points[index] = price
else:
data_points.extend([None] * (index - len(data_points))) # 补充None值
data_points.append(price)
app = QApplication(sys.argv)
plot_widget = PlotWidget()
plot_widget.show()
# 初始化数据列表
data_points = [None] * 240 # 用None填充,后续会被真实价格替换
# 设定定时器
timer = QTimer()
timer.timeout.connect(update_data)
timer.start(60000) # 60000毫秒等于60秒
# 主循环
sys.exit(app.exec_())
```
记得在实际应用中替换`new_point`为你的实时数据源获取的实际内容,并且根据需要调整时间单位。
阅读全文