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

基于时间跨度设置pglive实时绘图轴范围:解析roll_on_tick参数

关于pglive中roll_on_tick参数的含义与设置方案

一、roll_on_tick核心含义

roll_on_tick是pglive控制图表滚动触发逻辑的整数参数,直白来说:每新增指定数量(即roll_on_tick的值)的数据点,图表X轴的显示范围就向前滚动一次。滚动时,X轴起始位置会推进「roll_on_tick个数据点对应的时间长度」,同时自动移除最旧的roll_on_tick个数据点,确保显示点数不超过你设置的max_points。

二、结合你的需求设置方法

你的目标是固定显示时间跨度(如5秒),并按该跨度滚动更新,分两种场景给出精准设置方案:

场景1:跳步式滚动(如0-5s → 5-10s → 10-15s...)

这完全匹配你提到的“依次显示固定时间窗口”需求,步骤如下:

  1. 单位统一:将Bin宽度B(µs)转换为秒:B_sec = B * 1e-6
  2. 计算窗口总点数:时间跨度T(秒)内的总数据点数:max_points = int(T / B_sec)
  3. 设置roll_on_tick:直接赋值为max_points

示例验证:若T=5秒,B=1000µs(1ms),则max_points=5/0.001=5000,roll_on_tick=5000。每当新增5000个数据点(对应5秒时长),图表自动滚动到下一个5秒区间。

场景2:平滑滚动(窗口始终保持T秒,新数据实时进入)

若需要窗口实时跟随最新数据,始终显示最近T秒的内容,步骤如下:

  1. 计算每秒产生的数据点数:points_per_sec = 1e6 / B(B为µs单位)
  2. 计算每次更新新增点数:结合更新频率F(Hz),new_points_per_update = int(points_per_sec / F)
  3. 设置参数:
    • roll_on_tick = new_points_per_update
    • max_points = int(T / (B * 1e-6))(保证窗口总时长为T秒)

这样每次GUI更新时,图表会滚动对应点数的时间,始终维持T秒的显示范围。

三、关键注意事项

  • roll_on_tick和max_points必须为整数,计算后需用int()取整(或根据精度需求四舍五入)
  • 必须保证max_points >= roll_on_tick,否则会出现显示异常(滚动点数不能超过窗口总点数)
  • 若参数动态调整(如用户修改Bin宽度或时间跨度),需实时重新计算上述两个参数并更新图表配置

内容的提问来源于stack exchange,提问作者Aurora

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 14:57:41