设置 PeriodicDataFrame 的大小

问题描述 投票:0回答:0

我正在使用

hvPlot
streamz
在 Panel 应用程序中显示来自 Redis 缓存的实时数据。 hvPlot 将数据点附加到图表,在达到某种缓冲区的限制时,数据将自行滑动,显示最后 X 个数据点。

我不知道这个功能是来自我的

PeriodicDataFrame
还是我的hvPlot情节,但我想明确地(创建用户首选项)为我的PeriodicDataFrame设置行限制,如果可能的话。

这是我的代码:

import json
import pandas as pd
import hvplot.streamz
import holoviews as hv
from panel.widgets import IntSlider
from streamz.dataframe import PeriodicDataFrame
import redis
import panel as pn

pn.extension(sizing_mode="stretch_width")

# Connect to Redis cache
r = redis.Redis()

# Set up callback with streaming data
def sin_data(**kwargs):
    # Read the last element from the Redis list
    data = r.lindex('random_sin', -1)
    if data:
        data = json.loads(data)
        index = pd.to_datetime(data['timestamp'], unit='ms')
        return pd.DataFrame({'var_0': data['var_0'],
                           'var_1': data['var_1'],
                           'var_2': data['var_2'],
                           'var_3': data['var_3'],
                           'var_4': data['var_4'],
                           'var_5': data['var_5'],
                           'var_6': data['var_6'],
                           'var_7': data['var_7']},
                          columns=['var_' + str(x) for x in range(8)], index=[index])

df_1 = PeriodicDataFrame(sin_data, interval='100ms')

# Declare plots
line_1 = df_1.hvplot(kind='line', value_label="Sin", width=1200)

# some part about widgets
...

hv.extension('bokeh')
hv.renderer('bokeh').theme = 'caliber'
controls = pn.WidgetBox('# Commands',
                        ...
                        )

pn.template.FastListTemplate(
    site="Panel", 
    title="PoC", 
    sidebar=[*controls], 
    main=[
        "POC hvPlot, Bokeh, Panel",
        line_1,
    ]
).servable();

提前致谢。

bokeh hvplot streamz
© www.soinside.com 2019 - 2024. All rights reserved.