You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 01:25:24