Начертайте данни от една колона върху тире

Имам тези примерни данни и искам да създам просто табло за управление, така че да мога да начертая данни за всяка колона от падащо меню

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