如何用Python绘制仅显示10个点的实时动态随机数据图表?
实现实时滚动的10点数据动态图表
以下是满足需求的完整代码,基于Matplotlib实现实时更新、仅显示最新10个数据点的滚动动画效果:
import time import random import datetime import matplotlib.pyplot as plt # 开启Matplotlib交互模式 plt.ion() mylist = [] fig, ax = plt.subplots(figsize=(8, 4)) # 设置y轴范围适配随机数区间 ax.set_ylim(0, 100) for i in range(0, 61): x = random.randint(1, 100) mylist.append(x) # 维持列表长度不超过10 if len(mylist) > 10: mylist.pop(0) # 清除当前轴内容,准备绘制新数据 ax.cla() # 绘制当前10个数据点,x轴用0-9的索引对应位置 ax.plot(range(len(mylist)), mylist, marker='o', color='b') # 设置坐标轴标签和标题 ax.set_xlabel('数据索引') ax.set_ylabel('数值') ax.set_title(f'实时滚动数据(当前共{len(mylist)}个点)') # 固定x轴范围,保证始终显示最多10个位置 ax.set_xlim(-0.5, 9.5) # 刷新图表并暂停1秒,替代time.sleep避免阻塞 plt.draw() plt.pause(1) # 循环结束后关闭交互模式,保持图表窗口 plt.ioff() plt.show()
关键实现细节:
- 交互模式启用:
plt.ion()让Matplotlib支持实时更新,无需手动关闭窗口就能刷新内容 - 数据维护:通过
pop(0)保证列表始终只保留最新10个数据,和你原代码的逻辑一致 - 滚动效果实现:每次清除轴内容后重新绘制,x轴固定为0-9的范围,新数据加入时旧数据被移出列表,视觉上呈现向前滚动的动画
- 刷新机制:用
plt.pause(1)替代time.sleep(1),既能保证1秒的间隔,又能让图表及时刷新
内容的提问来源于stack exchange,提问作者MJay
相关产品推荐
相关产品推荐

