Plotly-Dash: Rangeslider не генерирует под графиком

Все. Я пытался создать график, используя Dash, и затем поместил ползунок под графиком, чтобы обновить его, но по какой-то причине я не могу заставить его отображаться. Я следую этому примеру для чистого Plotly, и я старался изо всех сил преобразовать его в код Dash, но он, похоже, не работает, только сгенерированный граф без ползунка.

Я старался изо всех сил, чтобы сделать минимальный пример моей работы с кодом слайдера в самом низу:

###### Main imports ######

import dash
import dash_core_components as dcc
import dash_html_components as html

from dash.dependencies import Input, Output, State

import pandas as pd


###### Miscl. functions and imports ######

import quandl as qd
api =  '1uRGReHyAEgwYbzkPyG3'
qd.ApiConfig.api_key = api 

import datetime as dt

###### Main code ######

app = dash.Dash()

app.scripts.config.serve_locally = True

app.layout = html.Div(children=[

    html.H1(children='Basic Forecast'),

    dcc.Input(id='online_input', value='AMZN', type='text'),

    dcc.DatePickerRange(

        id='training_range_picker',
        min_date_allowed = dt.date(1900, 1, 1),
        max_date_allowed = dt.datetime.today(),

        ## Default example dates
        start_date = dt.datetime(2018,3,4),
        end_date = dt.datetime(2018,6,20)),        

    html.Button('Search', id='run_search', n_clicks_timestamp='0'),

    html.Div(id='output_graph')

])


@app.callback(
    Output(component_id='output_graph', component_property='children'),
    [Input(component_id='run_search', component_property='n_clicks_timestamp')],
    [State(component_id='online_input', component_property='value'),
    State(component_id='training_range_picker', component_property='start_date'),
    State(component_id='training_range_picker', component_property='end_date')]
)
def update_value(run, online_input, start_train_date, end_train_date):

    if online_input:

        ## All date stuff
        start_date = dt.datetime.strptime(start_train_date, '%Y-%m-%d') #for more options %H:%M:%S.%f
        start_date = start_date.strftime('%Y-%m-%d')
        end_date = dt.datetime.strptime(end_train_date, '%Y-%m-%d') 
        end_date = end_date.strftime('%Y-%m-%d')

        data = qd.get_table('WIKI/PRICES', qopts={'columns': ['ticker', 'date', 'close']},
                        ticker=[online_input], date={'gte': str(start_date), 'lte': str(end_date)})

        data.reset_index(inplace=True, drop=True)
        data.set_index('date', inplace=True)
        name = online_input

        ######## Slider code starting here. ########
        steps = []
        for i in range(len(data)):
            step = dict(
            method = 'restyle',  
            args = ['visible', [False] * len(data)])
        step['args'][1][i] = True # Toggle i'th trace to "visible"
        steps.append(step)

        return dcc.Graph(
            id='time-series_graph',
            figure={
                'data': [
                    {'x': data.index, 'y': data.close, 'type': 'line', 'name': name},
                ],
                'layout': {
                    'title': name, 'sliders' : [dict(
                        len=50,
                        steps = steps)]
                }
            }
        )

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

Куда я здесь не так?

0 ответов

Другие вопросы по тегам