使用回调绘制条形图时出现错误

时间:2018-12-20 10:27:56

标签: python callback plotly plotly-dash

我是Plotly的新手。我正在尝试使用过滤器绘制条形图。这是我的代码,其中输入了Category和Country的值:

categories = df.Category.unique()
countries = df.CountryName.unique()

#Configure Layout
app.layout = html.Div([

        html.Div([
            dcc.Dropdown(
                id='category',
                options=[{'label': i.title(), 'value': i} for i in categories],
                value='Category'
            )
        ],
        style={'width': '48%', 'display': 'inline-block'}),

        html.Div([
            dcc.Dropdown(
                id='country',
                options=[{'label': i.title(), 'value': i} for i in countries],
                value='CountryName'
            )
        ],style={'width': '48%', 'float': 'right', 'display': 'inline-block'}),

    dcc.Graph(id='feature-graphic')
], style={'padding':10})

app.callback(
    Output('feature-graphic', 'figure'),
    [Input('category', 'value'),
     Input('country', 'value')])

def update_graph(category, country):
    return {
        'data': [go.Bar(
            x=df['SegmentName'],
            y=df[(df['Category']==category)&(df['Country']==country)]['Points'],
            text=df['Category'],
        ) for category in df['Category']],

        'layout': go.Layout(
            xaxis={'title': 'SegmentName'},
            yaxis={'title': 'Points'},
            margin={'l': 40, 'b': 40, 't': 10, 'r': 0},
            orientation='h',
            barmode='stack',
            hovermode='closest'
        )
    }

if __name__ == '__main__':
    app.run_server(debug=True)

我的数据框具有以下列:SegmentName(最低,最低,中级和较高),CountryName,类别(食品,饮料,运输...)和点。 我想用按类别(每个类别都有不同的颜色)的磅数来表示每个SegmentName的堆叠条形

我得到了一个带有国家和类别菜单的仪表板,但是当我选择这些值时我什么也没有得到。

有人知道如何解决这个问题吗?

谢谢!

0 个答案:

没有答案