Наносить данные в один столбец на тире

У меня есть эти образцы данных, и я хочу создать простую панель инструментов, чтобы я мог отображать данные каждого столбца из раскрывающегося меню.

Time,Tp,Cl,pH,Redox,Leit,Trueb,Cl_2,Fm,Fm_2
2016-02-15T11:54:00Z,4.4,0.14,8.38,755.0,232.0,0.009000000000000001,0.11,1428.0,1020.0
2016-02-15T11:55:00Z,4.4,0.14,8.38,755.0,232.0,0.009000000000000001,0.111,1436.0
2016-02-15T11:56:00Z,4.4,0.14,8.38,755.0,232.0,0.014,0.113,1471.0,1019.0
2016-02-15T11:57:00Z,4.4,0.14,8.37,755.0,232.0,0.015,0.111,1457.0,1015.0
2016-02-15T11:58:00Z,4.4,0.14,8.38,755.0,232.0,0.013,0.111,1476.0,1019.0


Вот код, который я могу реализовать. Однако при запуске я получаю сообщение об ошибке, относящееся к функции обратного вызова.

import dash
import plotly.graph_objects as go
import dash_html_components as html
import dash_core_components as dcc
from dash.dependencies import Input, Output
import pandas as pd

data = pd.read_csv("waterdata.csv")

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

app = dash.Dash(__name__, external_stylesheets=external_stylesheets)
app.layout = html.Div([
    dcc.Dropdown(
        id='my_dropdown',
        options=[{'label': col, 'value': col} for col in data.columns],
                 
        #placeholder="Select a variable",
        value = 'Tp', #initial value
        clearable=False,
        searchable=False,
    ),
    html.H4("Timeseries data"),
    dcc.Graph(id='timeseries'),
              
])

@app.callback(
    Output("timeseries", "children"), 
    [Input("my_dropdown", "value")])
def update_output(dropdown_value):
    df = data
    fig = go.Figure([go.Scatter(x=df['Time'], y=df[dropdown_value],name= str (dropdown_value))])
    return fig
        



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



person izbid    schedule 05.02.2021    source источник


Ответы (1)


Я думаю, что возвращаемое выходное значение должно быть «цифрой» в функции обратного вызова.

@app.callback(Output("timeseries", "figure"),
              [Input("my_dropdown", "value")])

введите описание изображения здесь

полный код:

import dash
import plotly.graph_objects as go
import dash_html_components as html
import dash_core_components as dcc
from dash.dependencies import Input, Output
import pandas as pd
import io

data='''
Time,Tp,Cl,pH,Redox,Leit,Trueb,Cl_2,Fm,Fm_2
2016-02-15T11:54:00Z,4.4,0.14,8.38,755.0,232.0,0.009000000000000001,0.11,1428.0,1020.0
2016-02-15T11:55:00Z,4.4,0.14,8.38,755.0,232.0,0.009000000000000001,0.111,1436.0
2016-02-15T11:56:00Z,4.4,0.14,8.38,755.0,232.0,0.014,0.113,1471.0,1019.0
2016-02-15T11:57:00Z,4.4,0.14,8.37,755.0,232.0,0.015,0.111,1457.0,1015.0
2016-02-15T11:58:00Z,4.4,0.14,8.38,755.0,232.0,0.013,0.111,1476.0,1019.0
'''

df = pd.read_csv(io.StringIO(data), sep=',')

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

app = JupyterDash(__name__, external_stylesheets=external_stylesheets)
app.layout = html.Div([
    dcc.Dropdown(
        id='my_dropdown',
        options=[{'label': col, 'value': col} for col in df.columns],
                 
        #placeholder="Select a variable",
        value = 'Tp', #initial value
        clearable=False,
        searchable=False,
    ),
    html.H4("Timeseries data"),
    dcc.Graph(id='timeseries'),
              
])

@app.callback(Output("timeseries", "figure"),
              [Input("my_dropdown", "value")])

def update_output(value):
    # df = data
    fig = go.Figure([go.Scatter(x=df['Time'], y=df[value], name=str(value))])
    return fig
        
if __name__ == '__main__':
    app.run_server(debug=True)
person r-beginners    schedule 05.02.2021
comment
Спасибо, это помогло. я запутался в свойстве «children», которое присуще только компонентам html, а не компонентам dcc.Graph. - person izbid; 05.02.2021