сюжетный обратный вызов в цикле - PullRequest
0 голосов
/ 11 мая 2019

Скажем, у меня есть цикл for, где каждая итерация занимает короткое время, и я хочу обновить тире в каждой итерации:

for i, (idx, row) in enumerate(df.iterrows()): update vector app.callback(Output('my-plot', 'figure'), [Input('vector')])

Я просмотрел онлайн, но, кажется, нет никакого способа сделать это в тире, кажется. Мое единственное решение состоит в том, чтобы использовать компонент Interval, а затем функция обратного вызова извлекает некоторые файлы pickle или что-то, что обновляется при запуске другого ядра на моем компьютере, но должен быть лучший способ.

Примечание: идея состоит в том, чтобы иметь график, который обновляется на 1 единицу времени, а затем добавляется к графику - через Dash. Пожалуйста, дайте мне знать, как вы это сделаете. Он знает, что я могу просто использовать обычный matplotlib.pyplot, но я хочу красивое приложение, а не matplotlib.

1 Ответ

0 голосов
/ 11 мая 2019

Используя Dash, если вы хотите обновить компонент, вам нужно использовать обратный вызов. Как вы сказали, Dash-способ - использовать компонент Interval в качестве триггера для обратного вызова.

Функция обратного вызова может считывать файл и проверять общее количество точек данных в нем и, возможно, использовать значение State отображаемых данных, чтобы можно было подсчитать, сколько точек данных отображается в данный момент. На каждой итерации функция добавляла еще одну точку из файла к выводу, пока не достигла общего количества точек данных в файле. Если у вас есть файл, который изменяет какая-то другая программа во время работы приложения Dash, функция обратного вызова сможет читать обновленный файл при каждом запуске.

...