当前位置: 首页 > 知识库问答 >
问题:

不使用下拉菜单更新图形(虚线绘制)

狄赞
2023-03-14

我试图构建一个仪表板,其中图形根据下拉框中传递的值进行更新。

由于某些原因,图表不适应下拉列表中的任何更改。这方面的特点是:

>

  • 输入是肯定收到的:我创建了第二个函数,它具有相同的结构,但更新了不同的字段。它工作正常。

    问题似乎是图形显示:我创建了一个不同版本的函数,其中更新函数将返回默认值1的“无”。图形的区域起初是空的,但是当在下拉列表中选择一个新值时,它会变成其中一个图形。一旦显示了一个图,该字段将不会对下拉框中的任何进一步更改做出反应:无论是提示新图的值,还是返回到默认值的返回都不会。

    代码如下:

    import dash
    from dash.dependencies import Output, Event
    import dash_core_components as dcc
    import dash_html_components as html
    import plotly
    import plotly.graph_objs as go
    from dash.dependencies import Input, Output
    import collections
    
    
    app = dash.Dash()
    
    df = dm.return_all_pd_data(token = API_TOKEN)
    
    app.layout = html.Div(children=[
        html.H1(children='''
            Month for graph:
        '''),
        dcc.Dropdown(
            id = "input",
            options=[
                {'label': 'Jan', 'value': 1},
                {'label': 'Feb', 'value': 2},
                {'label': 'Mar', 'value': 3}
            ], value = 1
        ),
        html.Div(id='output-graph'),
    ])
    
    @app.callback(
        Output(component_id='output-graph', component_property='children'),
        [Input(component_id='input', component_property='value')])
    def update_value(value):
    
        start = datetime.datetime(2018, value, 1, 0, 0, 0, 1)
        end = datetime.datetime(2018,  value + 1, 1, 0, 0, 0, 1)
        subset_df = df[ (df["lost_time"] > start) & (df["lost_time"] < end) ]
    
        x = pd.value_counts(subset_df.deal_source).index
        y = pd.value_counts(subset_df.deal_source).values
    
        return(dcc.Graph(
            id='output-graph',
            figure={
                'data': [
                    {'x': x, 'y': y, 'type': 'bar', 'name': value},
                ],
                'layout': {
                    'title': "You selected month: {}".format(value)
                }
            }
        ))
    
    
    if __name__ == "__main__":
    
        app.run_server(debug = True)
    
  • 共有1个答案

    柳志专
    2023-03-14

    我终于自己找到了解决办法。在这里回答,以防其他人也有同样的问题。

    问题是我试图更新div标签中的子元素。相反,事实证明,创建一个空图表并编写函数来更新图表的图形元素要容易得多。

    以下是证明有效的代码:

    app = dash.Dash()
    
    app.layout = html.Div(children=[
        html.H1(children='''
            Interactive Chart:
        '''),
        dcc.Dropdown(
            id = "input",
            options=[
                {'label': 'January', 'value': 1},
                {'label': 'Febuary', 'value': 2},
                {'label': 'March', 'value': 3}
            ], value = 1
        ),
        dcc.Graph( id="output-graph")
    ])
    
    @app.callback(
        Output(component_id='output-graph', component_property='figure'),
        [Input(component_id='input', component_property='value')])
    def update_value(value):
    
        start = datetime.datetime(2018, value, 1, 0, 0, 0, 1)
        end = datetime.datetime(2018,  value + 1, 1, 0, 0, 0, 1)
        subset_df = df[ (df["lost_time"] > start) & (df["lost_time"] < end) ]
        x = pd.value_counts(subset_df.deal_source).index
        y = pd.value_counts(subset_df.deal_source).values
    
        return({'data': [
                    {'x': x, 'y': y, 'type': 'bar', 'name': value},
                ],
                'layout': {
                    'title': "Deal Flow source for {} 2018".format(months[value-1])
                }
            }
        )
    
    if __name__ == "__main__":
        app.run_server(debug = True)
    
     类似资料:
    • 我正试图用Plotly编写散点图,并使其具有交互式trhough Dash回调,问题是当我更改下拉列表时,我的图形没有更新。数据结构如下所示: 报告修订周期202002年第29/02/2020号第16793 3 202001年第31/01/2020号第18933 1 202101年第31/01/2021 6246 132 202001年第17/01/2020 13 1号第

    • 问题内容: 我是javascript的初学者,我想根据下拉菜单中的选项更改图像(选择),但是遇到一些问题。 在本教程中,如果要使用代码,它们将用您要使用的图片文件名替换iljbild,因为图片文件的名称必须与示例中的类型相同,即唯一区分文件的应该是数字,例如pict0.gif,pict2.gif等。如果使用的是jpg图片,则必须用jpg替换gif。设置图像的宽度和高度,如果在选择列表中更改单词的长

    • 关于我的上一个问题(bootstrap上的下拉菜单不起作用),我正在为li下拉菜单的子菜单构建一个子菜单。这意味着它是嵌套的。银行菜单下有交易下拉菜单,交易下拉菜单下有不同类型交易的菜单。顺便说一下,我已经成功地创建了它,但是在悬停期间,“事务”模块的子菜单出现在事务菜单的前面,阻止了作为事务的父菜单。在悬停期间,如何避免它并将其放置在事务菜单的右侧?不管怎样,我已经使用了“右下拉菜单”,但它不会

    • 我正在使用MPAndroidChart绘制水平堆叠条形图。我需要的是在虚线中绘制每个条形图的堆叠区域。如果可能,我还需要用透明颜色或虚线填充该堆叠区域。所有这些都是为了显示我的条形图堆叠部分,作为我在每个条形图上显示的数据的可能改进。我想这可以使用BarChartCustomRenler来实现,但我不确定。

    • 问题内容: 我无法正常使用下拉菜单。我可以使导航栏完美显示,但是当我单击“ Dropdown”(二者之一)时,它不会显示下拉菜单。我曾尝试查看有关此问题的其他文章,但没有什么能解决每个人的问题。我直接从bootstrap网站复制了源代码,但似乎无法在我的机器上使用它。谁有想法?我盯着它看了一个小时,似乎无法弄清楚问题出在哪里。 问题答案: 也许尝试 看看是否行得通。

    • 我有一个带有可删除行和列的dash DataTable对象。我想根据可见行更新图形。我不确定如何创建回调以及要传递哪些参数。在浏览器中删除行时,表对象中存储的数据实际上可能不会更改。