首页 > 解决方案 > dcc.Graph 子图的 extendData

问题描述

我有一个带有dcc.Graph()组件的 Dash 应用程序。该组件具有我想使用回调更新的子图。第一个子图是线图,第二个是热图。我需要更新第一个中的 y 值和第二个中的 z 值。

该图设置为:

dcc.Graph(id='spec-waterfall', responsive=True, figure={
    'data': [
        {
            'type': 'line',
            'xaxis': 'x1',
            'yaxis': 'y1',
            'y': spec[0],
        },
        {
            'type': 'heatmap',
            'xaxis': 'x1',
            'yaxis': 'y2',
            'z': spec,
        }
    ],
    'layout': {
        'xaxis1': {
            'anchor': 'y1',
            'domain': [0.0, 1.0],
        },
        'yaxis1':{
            'anchor': 'free',
            'domain': [0.65, 1.0],
            'position': 0.0,
        },
        'yaxis2': {
            'anchor': 'x1',
            'domain': [0.0, 0.55],
        }
    }
})

spec二维数组在哪里。我尝试使用extendData属性在回调中更新它,因为我不想每次都替换整个图形(必须处理大量数据 - 最好只替换数据而不是整个图形)。

@app.callback(
    [Output("spec-waterfall", "extendData")],
    [Input("my-interval-timer", "n_intervals")],
    prevent_initial_call=True
)
def update_fig(index,spec=spec):
    newLine = # build 1D array of y values for line plot
    newSpec = # build 2D array of z values for heatmap

    updatedData = [dict(y=[newLine], z=[newSpec]), [0,0], [len(newLine), len(newSpec)]]
    return updatedData

但这与extendData具有错误形状的论点有关。任何提示表示赞赏!

标签: plotlyplotly-dashplotly-python

解决方案


推荐阅读