График головидов/панелей не обновляется при выполнении в JupyterlabPython

Программы на Python
Anonymous
График головидов/панелей не обновляется при выполнении в Jupyterlab

Сообщение Anonymous »

В ячейке jupyterlab я пытаюсь обновить фигуру графика из внешнего источника данных, который не знает об этой фигуре.
Но мне не удается обновить фигуру во время выполнения ячейки в качестве источника данных обновляется. Вместо этого моя цифра обновляется только один раз в конце.
Вот пример тестового кода:

Код: Выделить всё

import matplotlib as mpl
import panel as pn
from IPython import display
import holoviews as hv
import time
pn.extension()

val = 0
stream = hv.streams.Stream.define('I', index = 0)()

# This is the callback that is called whenever I push data in my `stream`
# This writes "HELLO {i}" in a matplotlib figure where `i` is the data updated
def _cb(index):
mpl.pyplot.ioff()
fig = mpl.figure.Figure(figsize=(1, 1))

string = f"HELLO {index}"
print(string)
fig.suptitle(string)

mpl.pyplot.ion()
panel = pn.panel(fig)
return panel

# Create the panel widget
col = pn.Column(pn.bind(_cb, index=stream.param.index))
display.display(col)

# Regularly publish data in my stream
for i in range(10):
stream.event(index=i)
time.sleep(1)
print("end of loop")
Чего я ожидаю
  • При создании фигуры и вызове display.display я увижу рисунок создан.
  • При вызовеstream.event в моем цикле for я должен видеть приведенный выше рисунок, обновляемый каждые 1 с, в то же время я должен видеть «HELLO {i} " в логах
Что я наблюдаю
  • Моя фигура правильно создана и отображается
  • Журналы отображаются под ячейкой, но цифра не обновляется (постоянно отображается «HELLO 0»)
  • Когда ячейка завершается, я см. журнал «конец цикла», и цифра обновляется с помощью «HELLO 9»
Примечание 1
При запуске только цикла for во второй ячейке фигура первой ячейки правильно обновляется каждую секунду.
Это не соответствует моему окончательному варианту использования, поскольку весь код должен выполняться в одной ячейке, но я бы хотелось бы понять, что происходит.
Примечание 2
При запуске этой ячейки в vscode с расширением Jupyterlab vscode сначала жалуется на отсутствие jupyter_bokeh и после установки и перезапуска ядра оно ведет себя как положено (регулярные обновления рисунка).
Запуск в jupyterlab с ядром, содержащим jupyter_bokeh, однако не работает.
Вы сейчас, если jupyter_bokeh может быть связано с этой проблемой?
Моя конфигурация

Код: Выделить всё

holoviews                     1.18.3
ipython                       8.18.1
ipython-genutils              0.2.0
ipywidgets                    8.0.6
jupyter_bokeh                 4.0.5
jupyter_client                8.6.0
jupyter_core                  5.7.1
jupyter-events                0.9.0
jupyter-lsp                   2.2.4
jupyter_server                2.13.0
jupyter_server_terminals      0.5.2
jupyterlab                    4.1.3
jupyterlab_pygments           0.3.0
jupyterlab_server             2.25.3
jupyterlab_widgets            3.0.10
jupytext                      1.16.2
matplotlib                    3.7.5
matplotlib-inline             0.1.6
panel                         1.3.8
Спасибо за помощь!

Подробнее здесь: https://stackoverflow.com/questions/790 ... jupyterlab

Вернуться в «Python»