在破折号上绘制单列数据

Plot single column data on dash

我有这个样本数据,我想创建一个简单的仪表板,这样我就可以从下拉菜单中绘制每一列数据

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)


我认为输出return值需要在回调函数中是'figure'。

@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)