Hey everyone i am making a DASH Realtime candlestick chart, and i have stumpled on an problem i hope you can help me with.
The problem is that when i run the project, it loads the candlestick chart fine and the indicators. But as soon as it updates by the interval it, then disapears, and it will do that on every update if i try to wing it back from the legends tab. Also the chart works fine, and updates fine if its alone, and without the indicators, but when they are added into the chart it removes the candlestick charts visability after 1 update.
The data is being pulled from a Websocket stream and converted into SQL, then into pandas dataframe.
This is an image of what happens:
This is the code:
import dash from dash.dependencies import Output, Input from dash import dcc from dash import html import pandas as pd import plotly.graph_objs as go import flask import waitress from waitress import serve server = flask.Flask(__name__) # define flask app.server app = dash.Dash(__name__, server=server) # call flask server app.layout = html.Div( html.Div([ dcc.Graph(id='live-update-graph-scatter', animate=True), dcc.Interval( id='interval-component', disabled=False, interval=1*5000, n_intervals=0 ) ]) ) @app.callback(Output('live-update-graph-scatter', 'figure'), [Input('interval-component', 'n_intervals')]) def update_graph_scatter(n): rec = pd.read_sql_table('crypto', engine) rec1 = pd.DataFrame(rec) print(rec1) rec1.columns = ['date', 'open', 'high', 'low', 'close', 'volume', 'EMA', 'EMA2'] rec1['date'] = pd.to_datetime(rec1['date']) rec1.set_index('date', inplace=True) ###SUBPLOT AND Candlestick CHART fig = make_subplots(rows=4, cols=1) fig.add_trace(go.Candlestick( x=rec1.index, open=rec1['open'], high=rec1['high'], low=rec1['low'], close=rec1['close']), row=1, col=1, ) ###### ADD INDICATOR TRACES: fig.add_trace( go.Scatter( x=rec1.index, y=rec1['EMA'], marker=dict(color='blue') ), row=1, col=1 ) fig.add_trace( go.Scatter( x=rec1.index, y=rec1['EMA2'], marker=dict(color='red') ), row=1, col=1 ) return fig if __name__ == '__main__': serve(app.server, host="localhost", port=5005)
Do you have any suggestions as to what i can do i would be happy to hear that.