我的数据每五秒更新一次 折线图只呈现最近的10条数据
时间: 2024-10-14 19:16:31 浏览: 7
如果你的数据每五秒更新一次,且你想在折线图上只显示最近的10条数据,可以结合pandas库和matplotlib库的DataFrame切片功能以及rolling函数来实现。这里是一个简化的步骤说明:
1. **存储数据**:每次数据更新后,将其添加到一个列表或DataFrame中。假设你有一个名为`data_list`的列表,每次更新都追加新的数据。
```python
new_data = {'timestamp': [current_timestamp], 'value': [new_value]}
data_df = pd.DataFrame(new_data).set_index('timestamp')
# 将新数据合并到现有DataFrame
if len(data_df) > 0:
data_df = data_df.append(new_data_df, ignore_index=True)
else:
data_df = new_data_df
# 只保留最近的10条数据
data_df = data_df.tail(10)
```
2. **实时绘图**:创建一个滚动窗口,每5秒只画出最新的那部分数据。
```python
import time
import matplotlib.pyplot as plt
import pandas as pd
# 初始化图表
fig, ax = plt.subplots()
def update_data(e=None):
# 每5秒执行一次更新
global data_df
while True:
if len(data_df) >= 10:
ax.clear() # 清除旧数据
ax.plot(data_df.index, data_df['value']) # 绘制最新10条数据
fig.canvas.draw_idle() # 更新图形
time.sleep(5) # 等待5秒
break # 数据已经更新完毕,跳出循环
timer = fig.canvas.mpl_connect('draw_event', update_data)
while True:
time.sleep(1) # 检查是否有新数据到来
```
这个例子中,当有新数据到达时,会自动清除旧数据并只显示最新的10条。记得替换`current_timestamp`和`new_value`为实际的新数据值。
阅读全文