将 Plotly Updatemenus 与 Dash 回调连接以实现动态布局图形大小作为 dash 回调的输入

问题描述

我有一个 Sankey 图表,它是使用 Plotly 的 Python 库创建的,它还有 “Updatemenus” 来调整图形的高度和宽度。 现在我将它与 Dash 一起使用,以使用回调并根据一些单选按钮值更新 Sankey 配色方案。 我面临两个不同的问题:

一个,当我使用回调来更新 Sankey 时,它是用认的高度/宽度创建的,有没有办法将当前的大小作为Dash回调的输入 >?因此,当使用 Plotly 的“更新菜单”更改图形大小时,如果我使用单选按钮回调,则通过单选按钮回调更新的新 Sankey 使用更新后的高度和宽度,并且不会返回认宽度和高度。

二,我正在使用 Sankey 图表下方的单选按钮(作为单独的 dcc.graph 对象),用于更新 Sankey 图表的颜色方案(也使用 Dash 回调)。当我使用 Plotly 的更新菜单增加宽度时,我还想根据 Sankey 图中节点的新位置更改单选按钮的位置。

是否可以有 Dash 应用程序的动态布局,当 Sankey 的宽度发生变化时,它会更新单选按钮的位置。我想到了 'updatemenus' 中三种不同宽度选项的 3 种不同布局(单选按钮的自定义位置),并在回调中使用图形宽度作为输入,以便在更改 sankey 宽度时更新布局。

我需要以某种方式将 Sankey 图形的当前高度/宽度作为破折号回调的输入,以便单选按钮回调不会将更新的宽度更改为认宽度/高度,并且我可以使用带有更新宽度的回调/高度。

而且我需要一个动态布局,布局作为当前宽度的函数,这样当桑基的宽度用更新菜单更新时,我也可以缩放单选按钮,即不同宽度的单选按钮的不同静态位置桑基。

app.layout = html.Div(
[
    html.Div([dcc.Graph(id="my-sankey",figure={})]),html.Div(
        dcc.RadioItems(
            id="color_radio_button",options=color_layers,value="EN Category",style={
                "display": "flex","justify-content": "space-between","align-items": "center","width": "82%","margin-left": "177px",},)
    ),],style={"justify-content": "center"})

这是回调的样子:

@app.callback(
    Output(component_id="my-sankey",component_property="figure"),Input(component_id='color_radio_button',component_property="value"))
def create_sankey(value):
    return my_sankey.create_sankey(color_layer_column_label=value)

非常感谢。

Sankey Image with static layout (customized position of radio buttons to match nodes in Sankey)

Radio buttons used to update colorscheme of Sankey

When width is updated using Plotly's updatemenus,I need to scale radio buttons as well

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...