【问题标题】:Dash callback with dropdown带有下拉菜单的 Dash 回调
【发布时间】:2020-07-12 09:03:14
【问题描述】:

我正在尝试弄清楚如何为具有多个国家/地区的情节实施下拉菜单。我对破折号和情节很陌生。这是我的代码:

import pandas as pd
import plotly.express as px
import dash
import dash_core_components as dcc
import dash_html_components as html

df = pd.read_csv('https://api.statbank.dk/v1/data/mpk100/CSV?valuePresentation=Value&timeOrder=Ascending&LAND=*&Tid=*', sep=';')
df = df[df['INDHOLD'] != '..']
df['rate'] = df['INDHOLD'].str.replace(',', '.').astype(float)
available_countries = df['LAND'].unique()
df.groupby('LAND')

app = dash.Dash()
app.layout = html.Div([
    dcc.Graph(
        id='mpk100'
    ),
dcc.Dropdown(
                  id = "dropdown_mpk100",
                  options=[{'label': i, 'value': i} for i in available_countries],
                  value=['DANMARK', 'USA'], #Initial values,
                  multi=True)
    

@app.callback(Output(component_id='fig-mpk100',component_property='figure'),
    [Input(component_id='dropdown_mpk100', component_property='value')])

 def update_df('value'):
return dep_var

    
app.run_server(debug=True, use_reloader=False)  # Turn off reloader if inside Jupyter

使用此代码,可用国家/地区的下拉菜单或图表都不会以破折号显示。有人可以解释如何处理这个问题并可能给出解决方案吗?

【问题讨论】:

  • 这段代码中没有任何情节。
  • 嗨@nonamednono 你介意看看我的回答是否有帮助吗?
  • 问题标题太笼统,没有说明问题。

标签: python pandas plotly plotly-dash


【解决方案1】:

您的代码中有几个缺失的部分。特别是你没有生成任何数字。在这里,我基本上为您想要绘制的所有国家/地区过滤df,然后将它们全部绘制为带有plotly.express 的线条。如果您愿意,您最终可以使用plotly.graph_objs 添加跟踪。

import pandas as pd
import plotly.express as px
import dash
import dash_core_components as dcc
import dash_html_components as html

df = pd.read_csv('https://api.statbank.dk/v1/data/mpk100/CSV?valuePresentation=Value&timeOrder=Ascending&LAND=*&Tid=*', sep=';')
df = df[df['INDHOLD'] != '..']
df['rate'] = df['INDHOLD'].str.replace(',', '.').astype(float)
available_countries = df['LAND'].unique()

app = dash.Dash()
app.layout = html.Div([
    dcc.Dropdown(
        id='demo-dropdown',
        options=[{'label': k, 'value': k} for k in available_countries],
        value=['Danmark', 'USA'],
        multi=True
    ),

    html.Hr(),
    dcc.Graph(id='display-selected-values'),

])

@app.callback(
    dash.dependencies.Output('display-selected-values', 'figure'),
    [dash.dependencies.Input('demo-dropdown', 'value')])
def update_output(value):
    ts = df[df["LAND"].isin(value)]
    fig = px.line(ts, x="TID", y="rate", color="LAND")
    return fig


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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-06
    • 1970-01-01
    • 1970-01-01
    • 2019-11-02
    • 1970-01-01
    相关资源
    最近更新 更多