Da sh раскрывающийся список с диаграммой - PullRequest
0 голосов
/ 12 июля 2020

Пытаюсь связать выпадающий список в da sh с цифрой. Я использую следующий код:

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)
df_countries = df['LAND'].unique()

df['TID'] = pd.to_datetime(df['TID']) #datetime
df.groupby('LAND')

external_stylesheets = ['https://codepen.io/chriddyp/pen/bWLwgP.css']

app = JupyterDash(__name__, external_stylesheets=external_stylesheets)

# Create server variable with Flask server object for use with gunicorn
server = app.server

app.layout = html.Div([

    html.Div([
        html.Div([
            dcc.Dropdown(id='linedropdown',
                options=[{'label': i, 'value': i} for i in df_countries],                    
                value='DANMARK',
                multi=True,
                clearable=False
            ),
        ],className='six columns'),

    ],className='row'),

    html.Div([
        html.Div([
            dcc.Graph(id='linechart'),
        ],className='six columns'),
    ],className='row'),
])

@app.callback(
    [Output('linechart', 'figure')],
    [Input('linedropdown', 'value')]
)

def update_graph(linedropval):
 
    df_filterd = df[df['LAND'].isin(['INDHOLD'])]
     #extract list of chosen countries
    list_chosen_countries=df_filterd['LAND'].tolist()
    #filter original df according to chosen countries
    #because original df has all the complete dates
    df_line = df[df['LAND'].isin(list_chosen_countries)]

    
    line_chart = px.line(
            data_frame=df_line,
            x='TID',
            y=linedropval,
            color='LAND',
            labels={'Rate':'rate', 'Datetime':'date'},
            )
    line_chart.update_layout(uirevision='foo')

    return (line_chart)

#------------------------------------------------------------------
app.run_server()

, но на панели управления появляется следующая ошибка:

ValueError: All arguments should have the same length. The length of 

column argument `df[color]` is 0, whereas the length of  previously-

processed arguments ['TID', 'y'] is 1

и

ValueError: Value of 'y' is not the name of a column in 'data_frame'. 
Expected one of ['LAND', 'TID', 'INDHOLD', 'rate'] but received: DANMARK

Как я могу с этим справиться? Выпадающий список включает страны с их уважаемыми процентными ставками по годам. Это должно быть просто. Но у меня проблемы с обратным вызовом.

...