Я разработал приложение для мониторинга на основе Python. как часть проекта, я хочу отобразить график в реальном времени и изменить значение графика в зависимости от ввода пользователя. я застрял в этой части. Живой график обновляется, когда я начинаю печатать в поле ввода (например, temp), график продолжает обновляться для каждой буквы, такой как t, te, tem, temp. поэтому я создал кнопку для ввода входного значения. по-прежнему график обновления для каждой буквы.
код для того же:
app = dash.Dash(__name__)
app.layout = html.Div(
[
dcc.Input(id='input-value', value='example', type='text'),
html.Button('Submit', id="submit-button"),
dcc.Graph(id='live-graph', animate=False),
dcc.Interval(
id='graph-update',
interval=1*1000
),
]
)
функция обратного вызова, как показано ниже
@app.callback(Output('live-graph', 'figure'),
[Input('submit-button','n_clicks')],
state=[State(component_id='sentiment_term', component_property='value')],
events=[Event('graph-update', 'interval')])
def update_graph_scatter(n_clicks, input_value):
conn = sqlite3.connect('database.db')
c = conn.cursor()
df = pd.read_sql("SELECT * FROM table WHERE colume LIKE ? ORDER BY unix DESC LIMIT 1000", conn ,params=('%' + input_value+ '%',))
df.sort_values('unix', inplace=True)
df['date'] = pd.to_datetime(df['unix'],unit='ms')
df.set_index('date', inplace=True)
X = df.index
Y = df.column
data = plotly.graph_objs.Scatter(
x=X,
y=Y,
name='Scatter',
mode= 'lines+markers'
)
return {'data': [data],'layout' : go.Layout(xaxis=dict(range= [min(X),max(X)]),
yaxis=dict(range=[min(Y),max(Y)])}
Примечание: если я удалил интервал, кнопка начинает работать. Но я хочу быть в режиме реального времени, а также кнопка