Plotly 如何随时间的变化更新地物的数据值
我目前正在尝试绘制实时更新的密度热图。这是我定义的图形和应用程序布局Plotly 如何随时间的变化更新地物的数据值,plotly,plotly-dash,Plotly,Plotly Dash,我目前正在尝试绘制实时更新的密度热图。这是我定义的图形和应用程序布局 figure = dict({ "data" : [{"type": 'heatmap', "x" : [], "y" : []}], "layout" : {"xaxis" : [0,255], "yaxis" : [0
figure = dict({
"data" : [{"type": 'heatmap',
"x" : [],
"y" : []}],
"layout" : {"xaxis" : [0,255], "yaxis" : [0,255]}
})
app.layout = html.Div(children=[
html.Div([
html.H1(children='Sensor Data'),
html.Div(children='''
3d Representation.
'''),
dcc.Graph(
id='live-update-graph',
figure = figure
),
]),
dcc.Interval(
id = 'clientside-time',
interval = 10,
n_intervals = 0
)
])
这是一个回调函数,应该每次都更新数据
phase = [i for i in range(256)]
phases = []
cycle = []
phases = phase *5
cycle = [[i] *256 for i in range(5)]
cycle = list(chain.from_iterable(cycle))
@app.callback(
Output('live-update-graph', 'extendData'),
Input('clientside-time', 'n_intervals')
)
def update_store_data(time):
df = DataFrame(storage[256*time : (time+5) * 256], columns = ['Intensity'] )
df['Phase'] = phases
print(time)
return dict(x = [df['Phase']], y = [df['Intensity']])
if __name__ == '__main__':
app.run_server(debug=True)
在我的理论中,列表切片应该从上面初始化的存储列表中得到不同的部分。但是,我看不到运行此代码后绘制的任何图形。这是使用时间变化更新数据的正确方法吗?根据您显示的代码进行实验,我认为图形显示不正确与您选择的
间隔值有关
当您将interval
设置为10
时,意味着回调将每隔10
毫秒()触发一次,这非常短
当我使用一些虚拟数据测试代码时,增加间隔
使数据出现在图表中
更新
您还使用了类型为heatmap
的图形,但在回调中,您只返回x
和y
的值。因此,图形不会以任何方式显示,因为没有设置图形的所有必要尺寸
顺便说一句,如果你对1秒的刷新率不满意,你也可以使用。有关extendData
和客户端回调的更多信息,请参见这个漂亮的答案。您能否分享一个更完整的示例,以及代码的具体目标是什么?使用时间从存储
访问元素的方式,如果让应用程序运行一段时间,你肯定会找到一个超出范围的索引。@BasvanderLinden我只是试图随着时间的推移绘制存储列表的不同部分。是的,我需要设置索引的最大限制。我能知道你在这方面试过的时间间隔吗?我把时间间隔改为1000,也就是1秒。我仍然没有得到任何图像…@Taki我再次查看了您的代码,我注意到现在您正在使用热图,热图除了需要x
和y
外,还需要z
维度。