1

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

“TypeError:update_graphs() 缺少 1 个必需的位置参数:'active_cell'”</p>

这是我的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
     ]

感谢您阅读我的代码,任何帮助将不胜感激!:)

4

1 回答 1

1

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

def update_graphs(active_cell,selected_row_ids):

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

于 2022-01-02T15:35:34.367 回答