Я новичок в Dash and Plotly.
Я пытаюсь создать панель мониторинга в режиме реального времени, чтобы я мог передавать новости через каждые 2 или 3 секунды.
Для этого я хотел бы иметь таблицу, которая начинается только с одной строки. Затем, когда поступают следующие новости, я получаю еще одну строку и т. Д. (Таблица должна содержать не более 10 строк, поэтому, возможно, я бы хотел использовать виртуализацию таблицы тире в случае, если пользователю нужен доступ к некоторым старым данным)
На данный момент я просто пытаюсь создать фрейм данных, который добавляет строку со случайной строкой каждую секунду. (это может быть 2 или 3 секунды)
Я хотел бы интегрировать эту таблицу в панель инструментов с другим графиком в реальном времени, как вы можете видеть в примере кода ниже.
Я сделал эту маленькую приборную панель с динамическим графиком вверху и столом внизу.
Я попытался добавить новый raw, используя data.append ({'lib': 'C', 'qty1': 'E'}) в обратном вызове, но безуспешно.
import dash
import dash_core_components as dcc
import dash_html_components as html
from dash.dependencies import Input, Output, State
from dash.exceptions import PreventUpdate
from numpy.random import randint
import time
external_stylesheets = ['https://codepen.io/chriddyp/pen/bWLwgP.css']
app = dash.Dash(__name__, external_stylesheets=external_stylesheets)
columns=[{"lib": "A", "qty1": "A"},{"lib": "B", "qty1": "B"}]
df = pd.DataFrame(columns)
app.layout = html.Div(children=[
html.H1(children='Hello World!', id='first'),
dcc.Interval(id='timer', interval=1000),
html.Div(id='dummy'),
dcc.Graph(
id='example-graph',
figure={
'data': [
{'x': [1, 2, 3],
'y': [4, 1, 2],
'type': 'bar', 'name': 'SF'},
{'x': [1, 2, 3],
'y': [2, 4, 5],
'type': 'bar', 'name': 'Montréal'},
],
'layout': {
'title': 'Dash Data Visualization'
}
}
),
dash_table.DataTable(
id='table-editing-simple',
columns=[
{"lib": "A", "qty1": "A"},
{"lib": "B", "qty1": "B"}],
data = df.to_dict("rows")
),
html.Div(
html.H5(
id='table-action-outputs',
children='',
style={'textAlign': 'left'}),
style={'width': '100%', 'display': 'inline-block', 'float': 'left'},
)
])
@app.callback(output=Output('example-graph', 'figure'),
inputs=[Input('timer', 'n_intervals')])
def update_graph(n_clicks):
return {
'data': [
{'x': [1, 2, 3],
'y': [random.randint(0, 10) for x in range(3)],
'type': 'bar', 'name': 'SF'},
{'x': [1, 2, 3],
'y': [random.randint(0, 10) for x in range(3)],
'type': 'bar', 'name': 'Montréal'},
],
'layout': {
'title': 'Dash Data Visualization'
}
}
@app.callback(Output('table-action-outputs', 'children'),
[Input('table-editing-simple', 'data'),
Input('timer', 'n_intervals')])
def update_database(n_clicks):
data.append({'lib': 'C', 'qty1': 'E'})
if __name__ == '__main__':
app.run_server(debug=True)
Сначала я не вижу значений в таблице. Я не знаю, почему это не показывает.
Я попытался добавить новый raw, используя data.append ({'lib': 'C', 'qty1': 'E'}) в обратном вызове, но безуспешно.