【问题标题】:Dash datatable active_cell破折号数据表 active_cell
【发布时间】:2021-03-03 13:39:19
【问题描述】:

我正在尝试使用活动单元格使我的表格与我的 Mapbox 交互。 在我的数据表中,当我单击单元格时,它应该向我显示地图上纬度和对数的表示点。但是,它向我显示了

的错误

“TypeError:update_graphs() 缺少 1 个必需的位置参数:‘active_cell’”

这是我的 mapbox 代码:

    import dash
    import dash_bootstrap_components as dbc
    import dash_core_components as dcc
    import dash_html_components as html
    import pandas as pd
    import dash_table
    from dash.dependencies import Input, Output, State
    from engine import session
    from model import Table1
    import plotly.express as px
    import plotly.graph_objects as go
    
    mapbox_access_token = "my token map"
    df = pd.read_sql(session.query(Table1).statement,session.bind)
    fig=go.Figure(go.Scattermapbox(
            lat=['1.11','1.22','1.33'],
            lon=['101.12','101.22','102.54'],
            mode='markers',
            marker=go.scattermapbox.Marker(
                size=10,
              color='rgb(255, 0, 0)'
            ),
            text=["1","2","3"]
        ))
    fig.update_layout(
        autosize=True,
        hovermode='closest',
        mapbox=dict(
            accesstoken=mapbox_access_token,
            bearing=0,
            center=dict(
                lat=1.222,
                lon=103.856
            ),
            pitch=0,
            zoom=2
        ),
    )
app = dash.Dash(__name__, external_stylesheets=[dbc.themes.BOOTSTRAP], suppress_callback_exceptions=True)

html.Div([dash_table.DataTable(
                    id='testtable',
                    columns=[{"name": i, "id": i,
                              'deletable': False,  
                              'renamable': True  
                              } for i in df.columns],
                    data=df.to_dict('records'),  
                    #details design of my table which is slighty long#
                    )]),
                dcc.Graph(figure=fig3_6,id='selectgraph'),

      @app.callback(
        Output('selectgraph', 'figure'),
        Input('testtable', 'active_cell'),
        Input('testtable', 'selected_row_ids'))
    def update_graphs(row_ids,selected_row_ids,active_cell):
        selected_id_set = set(selected_row_ids or [])
    
        if row_ids is None:
            dff = df3_6
            row_ids = df3_6['id']
        else:
            dff = df3_6.loc[row_ids]
    
        active_row_id = active_cell['row_id'] if active_cell else None
        colors = ['#FF69B4' if id == active_row_id
                  else '#7FDBFF' if id in selected_id_set
        else '#0074D9'
                  for id in row_ids]
        return [
            dcc.Graph(
                id=column + '--row-ids',
                figure=fig3_6,
                mode='markers',
                marker=go.scattermapbox.Marker(
                    size=2,
                color=colors,
                ))
        for column in ['long','lat'] if column in dff
     ]

感谢您阅读我的代码,我们将不胜感激! :)

【问题讨论】:

  • 问题是 active_cells 没有被定义,因此它不能在需要它作为位置参数的函数中使用。
  • 您好,感谢您的反馈!我想问我如何定义我的active_cell?有什么可以参考的例子吗?因为我对冲刺相当陌生...
  • 你能把剩下的代码贴出来吗?
  • 当然,我已经编辑了我的其余代码。谢谢!
  • 我不完全理解 active_cell 的用途以及你从哪里得到它,所以你能向我解释一下吗?

标签: python plotly-dash


【解决方案1】:

如果回调函数中有两个输入,则内部函数的参数必须是两个。您有三个参数,因此无法检索第三个参数。尝试用这样的函数重写代码

def update_graphs(active_cell,selected_row_ids):

以相同的输入顺序,然后重新组织代码。

【讨论】:

    猜你喜欢
    • 2020-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-18
    • 2021-10-31
    相关资源
    最近更新 更多