holoviz / hvplot

A high-level plotting API for pandas, dask, xarray, and networkx built on HoloViews
https://hvplot.holoviz.org
BSD 3-Clause "New" or "Revised" License
1.09k stars 105 forks source link

Errors rendering streaming plots #512

Open jbednar opened 4 years ago

jbednar commented 4 years ago

Using hvplot master or any other recent version plus holoviews 1.13.3 or 1.13.4, along with the fix from #511 to make Streaming.ipynb runnable, some of the streamz hvplots inexorably fill up with whitespace, such as two screenshots from Streaming.ipynb taken a few minutes apart: image image

I haven't noticed the problem when the same plot is displayed with no other plots in the layout: image

Nor have I noticed the problem when there is no backlog: image

I also haven't noticed the plot with holoviews 1.13.2: image

So I would assume the problem arose in HoloViews between 1.13.2 and 1.13.3, but I've filed the issue here because I don't have a HoloViews-only reproducer.

philippjfr commented 4 years ago

This appears to happen when the streaming plot is in a layout, doesn't matter what's in that layout though. Still looking into it, suspect something about the range calculation logic is off.

maximlt commented 1 year ago

I can't reproduce this error. Instead I get other errors, both on the server and client sides. Streaming support in hvPlot/HoloViews seems pretty limited at the moment. I have no clue how much effort is required to get it to work correctly again. For sure there should be a way for us to avoid future regressions when support is re-established.

maximlt commented 1 year ago

Code:

import hvplot.streamz

from streamz.dataframe import Random
df = Random(interval='200ms', freq='50ms')

layout = (df.hvplot.line(width=400, backlog=100) * df.hvplot.scatter(width=400, backlog=100) +
 df.groupby('y').sum().hvplot.bar('y', 'x', width=400) +
 df.hvplot.box(width=400) + df.x.hvplot.kde(width=400, shared_axes=False)).cols(2)
layout

Output (not always the same, sometimes some data is effectively rendered, but I never see it being streamed): image

Python error:

2022-10-23 18:56:39,940 - tornado.application - ERROR - Exception in callback functools.partial(<bound method IOLoop._discard_future_result of <tornado.platform.asyncio.AsyncIOLoop object at 0x7fb6d8c6cc40>>, <Task finished name='Task-4' coro=<PeriodicDataFrame._cb() done, defined at /Users/mliquet/miniconda3/envs/hv-dev38/lib/python3.8/site-packages/streamz/dataframe/core.py:1046> exception=KeyError('factors')>)
Traceback (most recent call last):
  File "/Users/mliquet/miniconda3/envs/hv-dev38/lib/python3.8/site-packages/tornado/ioloop.py", line 741, in _run_callback
    ret = callback()
  File "/Users/mliquet/miniconda3/envs/hv-dev38/lib/python3.8/site-packages/tornado/ioloop.py", line 765, in _discard_future_result
    future.result()
  File "/Users/mliquet/miniconda3/envs/hv-dev38/lib/python3.8/site-packages/streamz/dataframe/core.py", line 1052, in _cb
    await asyncio.gather(*source._emit(dict(last=last, now=now)))
  File "/Users/mliquet/miniconda3/envs/hv-dev38/lib/python3.8/site-packages/streamz/core.py", line 449, in _emit
    r = downstream.update(x, who=self, metadata=metadata)
  File "/Users/mliquet/miniconda3/envs/hv-dev38/lib/python3.8/site-packages/streamz/core.py", line 715, in update
    return self._emit(result, metadata=metadata)
  File "/Users/mliquet/miniconda3/envs/hv-dev38/lib/python3.8/site-packages/streamz/core.py", line 449, in _emit
    r = downstream.update(x, who=self, metadata=metadata)
  File "/Users/mliquet/miniconda3/envs/hv-dev38/lib/python3.8/site-packages/streamz/sinks.py", line 69, in update
    result = self.func(x, *self.args, **self.kwargs)
  File "/Users/mliquet/work/dev/holoviews/holoviews/streams.py", line 490, in send
    self.event(data=data)
  File "/Users/mliquet/work/dev/holoviews/holoviews/streams.py", line 428, in event
    self.trigger([self])
  File "/Users/mliquet/work/dev/holoviews/holoviews/streams.py", line 184, in trigger
    subscriber(**dict(union))
  File "/Users/mliquet/work/dev/holoviews/holoviews/plotting/plot.py", line 243, in refresh
    raise e
  File "/Users/mliquet/work/dev/holoviews/holoviews/plotting/plot.py", line 239, in refresh
    self._trigger_refresh(stream_key)
  File "/Users/mliquet/work/dev/holoviews/holoviews/plotting/plot.py", line 256, in _trigger_refresh
    self.update(key)
  File "/Users/mliquet/work/dev/holoviews/holoviews/plotting/plot.py", line 949, in update
    item = self.__getitem__(key)
  File "/Users/mliquet/work/dev/holoviews/holoviews/plotting/plot.py", line 435, in __getitem__
    self.update_frame(frame)
  File "/Users/mliquet/work/dev/holoviews/holoviews/plotting/bokeh/element.py", line 1516, in update_frame
    ranges = self.compute_ranges(self.hmap, key, ranges)
  File "/Users/mliquet/work/dev/holoviews/holoviews/plotting/plot.py", line 607, in compute_ranges
    self._compute_group_range(group, elements, ranges, framewise,
  File "/Users/mliquet/work/dev/holoviews/holoviews/plotting/plot.py", line 855, in _compute_group_range
    filtered = [r for i, r in zip(ids, values[g]) if i not in prev_ids]
KeyError: 'factors'

JS errors

Uncaught (in promise) Error: invalid bbox {left: NaN, top: 229.19020080566406, right: NaN, bottom: 237.08033752441406}
    o http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:389
    bbox http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:444
    z http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:452
    _draw_oriented_labels http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:452
    _draw_major_labels http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:452
    _render http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:452
    render http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:365
    _paint_levels http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:678
    _actual_paint http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:678
    paint http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:678
    after_layout http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:678
    after_layout http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:655
    after_layout http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:655
    after_layout http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:655
    compute_layout http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:655
    build http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:655
    renderTo http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:655
    f http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:743
    add_document_standalone http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:743
    embed_items_notebook http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:750
    embed_document http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:5
    <anonymous> http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:17
    <anonymous> http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:33
    attachWidget http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    insertWidget http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    _insertOutput http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    onModelChanged http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    m http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    l http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    emit http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    _onListChanged http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    m http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    l http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    emit http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    push http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    _add http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    add http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    _onIOPub http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    _handleIOPub http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    handleMsg http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    _handleMessage http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    _msgChain http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    promise callback*19883/b/this._onWSMessage http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    _createSocket http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    setTimeout handler*_reconnect http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    reconnect http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    restart http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    restartKernel http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    restart http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    restartKernel http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    r http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    execute http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    _executeKeyBinding http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    processKeydownEvent http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    evtKeydown http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    handleEvent http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
Uncaught Error: event model wasn't known
    apply_json_patch http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:324
    process_events http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:1477
    _document_changed http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:1477
    setTimeout handler*_document_changed http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:1477
    _document_listener http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:1477
    _trigger_on_change http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:324
    _push_changes http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:338
    setv http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:338
    after_layout http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:678
    after_layout http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:655
    after_layout http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:655
    after_layout http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:655
    compute_layout http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:655
    build http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:655
    renderTo http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:655
    f http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:743
    add_document_standalone http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:743
    embed_items_notebook http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:750
    embed_document http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:5
    <anonymous> http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:17
    <anonymous> http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:33
    attachWidget http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    insertWidget http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    _insertOutput http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    onModelChanged http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    m http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    l http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    emit http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    _onListChanged http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    m http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    l http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    emit http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    push http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    _add http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    add http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    _onIOPub http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    _handleIOPub http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    handleMsg http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    _handleMessage http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    _msgChain http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    promise callback*19883/b/this._onWSMessage http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    _createSocket http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    setTimeout handler*_reconnect http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    reconnect http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    restart http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    restartKernel http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    restart http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    restartKernel http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    r http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    execute http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    _executeKeyBinding http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    processKeydownEvent http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    evtKeydown http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    handleEvent http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
maximlt commented 1 year ago

I also got this Python error instead of the one reported above:

2022-10-23 18:58:55,145 - tornado.application - ERROR - Exception in callback functools.partial(<bound method IOLoop._discard_future_result of <tornado.platform.asyncio.AsyncIOLoop object at 0x7fb6d8c6cc40>>, <Task finished name='Task-5' coro=<PeriodicDataFrame._cb() done, defined at /Users/mliquet/miniconda3/envs/hv-dev38/lib/python3.8/site-packages/streamz/dataframe/core.py:1046> exception=KeyError('y_range')>)
Traceback (most recent call last):
  File "/Users/mliquet/miniconda3/envs/hv-dev38/lib/python3.8/site-packages/tornado/ioloop.py", line 741, in _run_callback
    ret = callback()
  File "/Users/mliquet/miniconda3/envs/hv-dev38/lib/python3.8/site-packages/tornado/ioloop.py", line 765, in _discard_future_result
    future.result()
  File "/Users/mliquet/miniconda3/envs/hv-dev38/lib/python3.8/site-packages/streamz/dataframe/core.py", line 1052, in _cb
    await asyncio.gather(*source._emit(dict(last=last, now=now)))
  File "/Users/mliquet/miniconda3/envs/hv-dev38/lib/python3.8/site-packages/streamz/core.py", line 449, in _emit
    r = downstream.update(x, who=self, metadata=metadata)
  File "/Users/mliquet/miniconda3/envs/hv-dev38/lib/python3.8/site-packages/streamz/core.py", line 715, in update
    return self._emit(result, metadata=metadata)
  File "/Users/mliquet/miniconda3/envs/hv-dev38/lib/python3.8/site-packages/streamz/core.py", line 449, in _emit
    r = downstream.update(x, who=self, metadata=metadata)
  File "/Users/mliquet/miniconda3/envs/hv-dev38/lib/python3.8/site-packages/streamz/sinks.py", line 69, in update
    result = self.func(x, *self.args, **self.kwargs)
  File "/Users/mliquet/work/dev/holoviews/holoviews/streams.py", line 490, in send
    self.event(data=data)
  File "/Users/mliquet/work/dev/holoviews/holoviews/streams.py", line 428, in event
    self.trigger([self])
  File "/Users/mliquet/work/dev/holoviews/holoviews/streams.py", line 184, in trigger
    subscriber(**dict(union))
  File "/Users/mliquet/work/dev/holoviews/holoviews/plotting/plot.py", line 243, in refresh
    raise e
  File "/Users/mliquet/work/dev/holoviews/holoviews/plotting/plot.py", line 239, in refresh
    self._trigger_refresh(stream_key)
  File "/Users/mliquet/work/dev/holoviews/holoviews/plotting/plot.py", line 256, in _trigger_refresh
    self.update(key)
  File "/Users/mliquet/work/dev/holoviews/holoviews/plotting/plot.py", line 948, in update
    return self.initialize_plot()
  File "/Users/mliquet/work/dev/holoviews/holoviews/plotting/bokeh/element.py", line 1390, in initialize_plot
    plot = self._init_plot(key, style_element, ranges=ranges, plots=plots)
  File "/Users/mliquet/work/dev/holoviews/holoviews/plotting/bokeh/element.py", line 487, in _init_plot
    axis_types, labels, plot_ranges = self._axes_props(plots, subplots, element, ranges)
  File "/Users/mliquet/work/dev/holoviews/holoviews/plotting/bokeh/element.py", line 470, in _axes_props
    x_range, y_range = plot_ranges['x_range'], plot_ranges['y_range']
KeyError: 'y_range'
BGameiro2000 commented 1 year ago

Code:

import hvplot.streamz

from streamz.dataframe import Random
df = Random(interval='200ms', freq='50ms')

layout = (df.hvplot.line(width=400, backlog=100) * df.hvplot.scatter(width=400, backlog=100) +
 df.groupby('y').sum().hvplot.bar('y', 'x', width=400) +
 df.hvplot.box(width=400) + df.x.hvplot.kde(width=400, shared_axes=False)).cols(2)
layout

Output (not always the same, sometimes some data is effectively rendered, but I never see it being streamed): image

Python error:

2022-10-23 18:56:39,940 - tornado.application - ERROR - Exception in callback functools.partial(<bound method IOLoop._discard_future_result of <tornado.platform.asyncio.AsyncIOLoop object at 0x7fb6d8c6cc40>>, <Task finished name='Task-4' coro=<PeriodicDataFrame._cb() done, defined at /Users/mliquet/miniconda3/envs/hv-dev38/lib/python3.8/site-packages/streamz/dataframe/core.py:1046> exception=KeyError('factors')>)
Traceback (most recent call last):
  File "/Users/mliquet/miniconda3/envs/hv-dev38/lib/python3.8/site-packages/tornado/ioloop.py", line 741, in _run_callback
    ret = callback()
  File "/Users/mliquet/miniconda3/envs/hv-dev38/lib/python3.8/site-packages/tornado/ioloop.py", line 765, in _discard_future_result
    future.result()
  File "/Users/mliquet/miniconda3/envs/hv-dev38/lib/python3.8/site-packages/streamz/dataframe/core.py", line 1052, in _cb
    await asyncio.gather(*source._emit(dict(last=last, now=now)))
  File "/Users/mliquet/miniconda3/envs/hv-dev38/lib/python3.8/site-packages/streamz/core.py", line 449, in _emit
    r = downstream.update(x, who=self, metadata=metadata)
  File "/Users/mliquet/miniconda3/envs/hv-dev38/lib/python3.8/site-packages/streamz/core.py", line 715, in update
    return self._emit(result, metadata=metadata)
  File "/Users/mliquet/miniconda3/envs/hv-dev38/lib/python3.8/site-packages/streamz/core.py", line 449, in _emit
    r = downstream.update(x, who=self, metadata=metadata)
  File "/Users/mliquet/miniconda3/envs/hv-dev38/lib/python3.8/site-packages/streamz/sinks.py", line 69, in update
    result = self.func(x, *self.args, **self.kwargs)
  File "/Users/mliquet/work/dev/holoviews/holoviews/streams.py", line 490, in send
    self.event(data=data)
  File "/Users/mliquet/work/dev/holoviews/holoviews/streams.py", line 428, in event
    self.trigger([self])
  File "/Users/mliquet/work/dev/holoviews/holoviews/streams.py", line 184, in trigger
    subscriber(**dict(union))
  File "/Users/mliquet/work/dev/holoviews/holoviews/plotting/plot.py", line 243, in refresh
    raise e
  File "/Users/mliquet/work/dev/holoviews/holoviews/plotting/plot.py", line 239, in refresh
    self._trigger_refresh(stream_key)
  File "/Users/mliquet/work/dev/holoviews/holoviews/plotting/plot.py", line 256, in _trigger_refresh
    self.update(key)
  File "/Users/mliquet/work/dev/holoviews/holoviews/plotting/plot.py", line 949, in update
    item = self.__getitem__(key)
  File "/Users/mliquet/work/dev/holoviews/holoviews/plotting/plot.py", line 435, in __getitem__
    self.update_frame(frame)
  File "/Users/mliquet/work/dev/holoviews/holoviews/plotting/bokeh/element.py", line 1516, in update_frame
    ranges = self.compute_ranges(self.hmap, key, ranges)
  File "/Users/mliquet/work/dev/holoviews/holoviews/plotting/plot.py", line 607, in compute_ranges
    self._compute_group_range(group, elements, ranges, framewise,
  File "/Users/mliquet/work/dev/holoviews/holoviews/plotting/plot.py", line 855, in _compute_group_range
    filtered = [r for i, r in zip(ids, values[g]) if i not in prev_ids]
KeyError: 'factors'

JS errors

Uncaught (in promise) Error: invalid bbox {left: NaN, top: 229.19020080566406, right: NaN, bottom: 237.08033752441406}
    o http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:389
    bbox http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:444
    z http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:452
    _draw_oriented_labels http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:452
    _draw_major_labels http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:452
    _render http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:452
    render http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:365
    _paint_levels http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:678
    _actual_paint http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:678
    paint http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:678
    after_layout http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:678
    after_layout http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:655
    after_layout http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:655
    after_layout http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:655
    compute_layout http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:655
    build http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:655
    renderTo http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:655
    f http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:743
    add_document_standalone http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:743
    embed_items_notebook http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:750
    embed_document http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:5
    <anonymous> http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:17
    <anonymous> http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:33
    attachWidget http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    insertWidget http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    _insertOutput http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    onModelChanged http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    m http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    l http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    emit http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    _onListChanged http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    m http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    l http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    emit http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    push http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    _add http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    add http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    _onIOPub http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    _handleIOPub http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    handleMsg http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    _handleMessage http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    _msgChain http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    promise callback*19883/b/this._onWSMessage http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    _createSocket http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    setTimeout handler*_reconnect http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    reconnect http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    restart http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    restartKernel http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    restart http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    restartKernel http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    r http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    execute http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    _executeKeyBinding http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    processKeydownEvent http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    evtKeydown http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    handleEvent http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
Uncaught Error: event model wasn't known
    apply_json_patch http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:324
    process_events http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:1477
    _document_changed http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:1477
    setTimeout handler*_document_changed http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:1477
    _document_listener http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:1477
    _trigger_on_change http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:324
    _push_changes http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:338
    setv http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:338
    after_layout http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:678
    after_layout http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:655
    after_layout http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:655
    after_layout http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:655
    compute_layout http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:655
    build http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:655
    renderTo http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:655
    f http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:743
    add_document_standalone http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:743
    embed_items_notebook http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:750
    embed_document http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:5
    <anonymous> http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:17
    <anonymous> http://localhost:8888/lab/workspaces/auto-x/tree/Untitled50.ipynb line 2 > injectedScript:33
    attachWidget http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    insertWidget http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    _insertOutput http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    onModelChanged http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    m http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    l http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    emit http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    _onListChanged http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    m http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    l http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    emit http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    push http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    _add http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    add http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    _onIOPub http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    _handleIOPub http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    handleMsg http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    _handleMessage http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    _msgChain http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    promise callback*19883/b/this._onWSMessage http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    _createSocket http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    setTimeout handler*_reconnect http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    reconnect http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    restart http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    restartKernel http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    restart http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    restartKernel http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    r http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    execute http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    _executeKeyBinding http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    processKeydownEvent http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    evtKeydown http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2
    handleEvent http://localhost:8888/static/lab/jlab_core.1d4a092221669bba35bb.js?v=1d4a092221669bba35bb:2

For me, even when not in a layout, I only get static plots. They only change when I rerun the cell.