0

我正在使用 Dash 绘制一些数据。我目前有一个带有两个数据集的集群条形图(集群中的每个条形一个。)这些数据集的名称和条形的相应颜色显示在图的左上角。可以单击它们以打开和关闭它们,这将从图表中删除其相应的条形图。

另外,我有一个可以在图表中显示的项目清单。我正在使用回调来更新图表,以便它只显示用户检查过的内容。这会按预期更新图表,但是,它还会重置条形图/数据集,以便两者都启用。IE。如果您只选择一个栏,然后选择一些新的清单项目,它将显示新的清单项目和两个栏。

我的想法是这样做的合乎逻辑的方法是将一些变量作为第二个输入传递给回调函数,然后在函数内设置输出图形以仅显示正确的条形图。但是,我似乎找不到包含此数据的变量。

据我所知,Plotly 图形对象的可访问属性是“id”、“clickData”、“clickAnnotationData”、“hoverData”、“clear_on_unhover”、“selectedData”、“relayoutData”、“figure”、“style” 、“类名”、“动画”、“动画选项”、“配置”和“加载状态”。

我已经调查了所有这些,似乎没有人拥有我正在寻找的数据。有谁知道访问这些数据的简单方法?

这就是我的回调现在的工作方式:

@app.callback(
    dash.dependencies.Output('theGraph', 'figure'),
    [dash.dependencies.Input('theChecklist','values'),
    dash.dependencies.Input('theGraph', 'clickData')
    ]
)
def updateGraph(checklistValues, figureInput):

    #print to see what the variables hold
    print(checklistValues)
    print(figureInput)

    figure=go.Figure(
        data = [
            go.Bar(
                x = df[df['MyColumnName'].isin(checklistValues)].groupby('MyColumnName').size().index,
                y = df[df['MyColumnName'].isin(checklistValues)].groupby('MyColumnName').size().values,
                name = 'Bar 1'
            ),
            go.Bar(
                x = df[df['MyColumnName'].isin(checklistValues)].groupby('MyColumnName')['# cores'].sum().reset_index()['MyColumnName'],
                y = df[df['MyColumnName'].isin(checklistValues)].groupby('MyColumnName')['# cores'].sum().reset_index()['MyOtherColumnName'],
                name = 'Bar 2'
            )
        ],
        layout=go.Layout(
            title='The Title',
            showlegend=True,
            legend=go.layout.Legend(
                x=0,
                y=1.0
            ),
            margin=go.layout.Margin(l=40, r=40, t=40, b=110)
        )
    )

    return figure
4

0 回答 0