Ошибка обратного вызова в Дашборде
Пытаюсь настроить график так, чтобы можно было выбирать группы людей (представленные в столбцах данных) в строке меню, то есть фильтровать по ним.
Но получаю такое

Не могу понять, в чем ошибка. Данные здесь https://docs.google.com/spreadsheets/d/1hJSCNI0JtkZcoGXtyr9eE872Knxsawh7szHa3nOwJAs/edit?usp=sharing
import dash
import plotly.graph_objs as go
import dash_core_components as dcc
import dash_html_components as html
import pandas as pd
import os
import numpy as np
from dash.dependencies import Output, Input
external_stylesheets = [
{
"href": "mystyle.css"
"family=Lato:wght@400;700&display=swap",
"rel": "stylesheet",
},
]
data = pd.read_excel("Dash.xlsx", sheet_name='Лист1')
col_list = data.columns[1:6]
app = dash.Dash(__name__, external_stylesheets=external_stylesheets)
app.layout = html.Div(
children=[
html.Div(
children=[
html.P(children="??", className="header-emoji"),
html.H1(
children="Анализ результатов", className="header-title"
),
html.P(
children="Цели анализа:",
className="header-description",
),
html.P(
children="1. Выявить группы",
className="header-description1",
),
html.P(
children="2. Проанализировать особенности",
className="header-description2",
),
],
className="header",
),
html.Div(
children=[
html.Div(
children=[
html.Div(children="Кластер", className="menu-title"),
dcc.Dropdown(
id="name-filter",
options = [
{'label': i, 'value': i}
for i in col_list],
value=col_list[0],
clearable=False,
className="dropdown",
),
]
),
],
className="menu",
),
html.Div(
children=[
html.Div(
children=dcc.Graph(
id="efficiency_chart", config={"displayModeBar": False},
),
className="card",
style={'width': '100%', 'hight': '60%', 'float': 'center', 'display': 'inline-block'},
),
],
className="wrapper",
),
]
)
@app.callback(
[ Output("efficiency_chart", "figure")],
[Input("name-filter", "value")],
)
def update_charts(selected_col):
if selected_col is None:
selected_col = col_list[0]
efficiency = {
'data': [go.Scatter(
x=data['names'],
y=data[selected_col],
mode='lines + markers',
marker={
'size': 15,
'opacity': 0.5,
'line': {'width': 0.5, 'color': '#00788C'}
}
)],
}
return efficiency
if __name__ == "__main__":
app.run_server(debug=True)