Reputation: 1
In a jupyterlab cell, I am trying to update a plot figure from an external data source which does not know about the figure. But I cannot manage to have the figure updated during the cell execution as the data source is updated. Instead, my figure is updated only once at the end.
Here is the test code sample:
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
, I shall see the figure created.stream.event
in my for loop, I should see the above figure updated every 1s, at the same time I should see "HELLO {i}" in the logsWhen running only the for loop in a second cell, the figure of the first cell is correctly updated every second. This does not match my final use case as all the code should be executed in one cell, but I'd like to understand what happens.
When running this cell in vscode with Jupyterlab extension, vscode first complains about not having jupyter_bokeh
and after installation and kernel restarts, it behaves as expected (regular updates of the figure).
Running in jupyterlab with a kernel containing jupyter_bokeh
does not work though.
Do you now if jupyter_bokeh might be related to this issue?
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
Thanks for your help!
Upvotes: 0
Views: 48