Skip to content

repeated callback alters Candlestick/OHLC data #241

Closed
@bcdunbar

Description

@bcdunbar

When candlestick and ohlc chart types are repeatedly updated, data is wrongly transformed.

For example,

(1) select AAPL from dropdown
(2) select AAPL again and data transforms
(3) select AAPL again and data transforms again
(4) ... so on

Run below script and repeatedly select ticker options.

import dash
import dash_core_components as dcc
import dash_html_components as html
from dash.dependencies import Input, Output

import pandas as pd
import pandas_datareader as web

app = dash.Dash()

df_a = web.DataReader("AAPL", 'morningstar').reset_index()
df_t = web.DataReader("TSLA", 'morningstar').reset_index()
df = pd.concat([df_a,df_t])

app.layout = html.Div(children=[
    html.Div(children=[
        dcc.Dropdown(
                id='input',
                options=[{'label': i, 'value': i} for i in df['Symbol'].unique()],
                value='AAPL'
            )
        ], style={'width': '100px'}),

        dcc.Graph(id='graph')
])

@app.callback(Output('graph', 'figure'),
[Input('input', 'value')])
def update_candle(value):
    symbol = str(value)
    df2 = df[df['Symbol'] == symbol]
    figure = {
        'data': [{
            'x': df2['Date'],
            'open': df2['Open'],
            'high': df2['High'],
            'low': df2['Low'],
            'close': df2['Close'],
            'type': 'candlestick',
            'name': symbol
        }]
    }
    return figure

app.css.append_css({"external_url": "https://codepen.io/chriddyp/pen/bWLwgP.css"})

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions