MULTI选项中的输入不会在破折号python中产生预期的输出

我想通过下拉菜单中的multi = True来按Year进行过滤,并获取输出。
当我依次输入2018、2019、2020或一一输入时,我已经设法获得输出。 如果我选择2018、2019或2019、2018,或其他顺序,则不会显示该图。 产生的错误:KeyError:错误
我错过了什么以及如何正确执行下拉菜单? 我的代码如下。 谢谢

#!/usr/bin/env python3
import plotly.graph_objs as go
import pandas as pd
import numpy as np
import os,dash
import dash_html_components as html
import dash_core_components as dcc
from dash.dependencies import Input,Output

c = 1,2,3,4,5,6,7,8,9,10,11,12
idx = 2018,2019,2020
df_group = pd.DataFrame(np.random.randint(0,100,size=(3,12)),columns=list(c),index=list(idx))
#df_group.index.names = ['Year']

year_options = []
for metai in df_group.index.unique():
    year_options.append({'label': str(metai),'value': metai})

app = dash.Dash()
app.layout = html.Div([
    dcc.Graph(id='graph'),dcc.Dropdown(
        id='year-picker',multi=True,options=year_options,value=2019
    )
])

@app.callback(
    Output('graph','figure'),[Input('year-picker','value')])

def update_figure(selected_year):
    data = []
    #for year in df_group.loc[df_group.index == selected_year].index.unique(): - bad code
    for year in selected_year:
        #print(year)
        trace = go.Scatter(
            x=df_group.columns,y=df_group.loc[year],mode='markers+lines',marker = {
                        'size': 12,'line': {'width': 2}
                        },name=str(year)
            )
        data.append(trace)
    return {
        'data': data,'layout': go.Layout(
        title='Per Year,EUR'
    )}

if __name__ == '__main__':
    app.run_server(debug=True)
why111333 回答:MULTI选项中的输入不会在破折号python中产生预期的输出

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3143774.html

大家都在问