python - 使用 Dash 和 Plotly 实时更新表值

标签 python plotly q-learning plotly-dash

我正在尝试用 Python 构建一个破折号应用程序来模拟 Q-Learning 问题。在实现该算法之前,我只是专注于使表工作随机递增值并在每次递增之间等待 1 秒。

Q 在这里是一个 pandas 数据框:

table = ff.create_table(Q,  height_constant=20)
table.layout.width=300

def update_Q(Q):
    for i in range(len(Q)):
        for j in range(1, len(Q.columns)):        
            Q.iloc[i,j] += np.random.choice([0,1,2])
    print(Q)
    return Q

我能够让它与打印语句一起工作,控制台上表的值确实得到了更新。

然而,在浏览器中它只是第一次更新,但随后它保持静态。这是代码:

# Browser visualization

app.layout = html.Div([
        html.H1(children='Frozen Lake: Q-Learning Demo'),
        dcc.Graph(id='table', figure=table),
        dcc.Interval(
            id='time',
            interval=1*1000, # in milliseconds
            n_intervals=0)
        ]
    )


@app.callback(Output(component_id = 'table', component_property='figure'),
              [Input(component_id = 'time', component_property='n_intervals')])    
def update_table(n):   
    # Update values
    new_table = ff.create_table(update_Q(Q))
    time.sleep(1)
    return new_table


if __name__ == '__main__':
    app.run_server()

我错过了什么?

最佳答案

已解决。没有什么比早上喝咖啡更好的了; )

最好将表的创建包装到一个函数中,并在每个时间间隔为每次更新调用它。此外,以前的语法不会保留在创建的第一个表中定义的样式。

    # Helper functions to draw and update values of the table
    def draw_Table(Q):
        table = ff.create_table(Q, index=True, height_constant=20)
        table.layout.width=300
        return table
    def update_Q(Q):
        for i in range(len(Q)):
            for j in range(1, len(Q.columns)):        
                Q.iloc[i,j] += np.random.choice([0,1,2])
        return Q

然后,

    @app.callback(Output(component_id = 'table', component_property='figure'),
                  [Input(component_id = 'time', component_property='n_intervals')])    
    def update_table(n):   
        # Update values
        new_table = draw_Table(update_Q(Q))
        time.sleep(1)
        return new_table

希望对大家有帮助!

关于python - 使用 Dash 和 Plotly 实时更新表值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52214458/

相关文章:

python - 深度强化学习 - CartPole 问题

python - getText() 对比 text() 对比 get_text()

r - 在 ggplot2 和 plotly 中仅显示一层的工具提示

python - 从 python 中的 colorlover 的色阶中获取单独的颜色

python - plotly :如何从具有长格式或宽格式的 Pandas 数据框中绘制线图?

neural-network - 深度 Q 学习适合解决 Cartpole 任务吗?

c++ - Q学习飞行棋游戏?

python - 使用MySQLdb更新表时出错

python - 我怎样才能提高这个最短路径/捷径(数组图DS)解决方案的速度?

python - 为什么从 stdin 读取一行会阻止从 Python 中的 stdin.buffer 读取