# Plot multi-selection: DynamicMap fails, pn.bind works

**URL:** <https://discourse.holoviz.org/t/plot-multi-selection-dynamicmap-fails-pn-bind-works/6136>\
**Category:** HoloViews\
**Tags:** panel, holoviews, dynamicmap, hvplot\
**Created:** [October 3, 2023, 12:05pm UTC](https://discourse.holoviz.org/t/plot-multi-selection-dynamicmap-fails-pn-bind-works/6136 "2023-10-03T12:05:01Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![mcav](https://discourse.holoviz.org/letter_avatar_proxy/v4/letter/m/c2a13f/32.png) [@mcav](https://discourse.holoviz.org/u/mcav)\
**Post date:** [October 3, 2023, 12:05pm UTC](https://discourse.holoviz.org/t/plot-multi-selection-dynamicmap-fails-pn-bind-works/6136/1 "2023-10-03T12:05:01Z")

</div>

I’d like to use `hv.dynamicMap` to interactively plot selected variables from a dataframe.  
When interacting with a `pn.widgets.MultiSelector()` the plot updates, but plot legend labels fail and seem to remain wrong throughout after the first fail.  
Interestingly `pn.bind` using the same updates just works…

I’d like to use DynamicMap because it seems faster and easily allows further callbacks/streams.

```python
import pandas as pd
import numpy as np
import holoviews as hv
import panel as pn
import hvplot.pandas
pn.extension()

import warnings
warnings.simplefilter(action='ignore', category=FutureWarning)

names = list('ABCD')
# names = ['current', 'ref', 'rod_position', 'spool_xs']
colordict = {name:color for name, color in zip(names,hv.Cycle().values[:len(names)])}
randdata = np.random.randint(0,2,(150,4))
data = (np.arange(1,5)*randdata).transpose().cumsum(axis=1).transpose()
df = pd.DataFrame(data,columns=names)

def plot_selection(cols,title):
    return hv.NdOverlay({name:df.hvplot(y=name,title=title,c=colordict[name]) for name in cols})

wdgt = pn.widgets.MultiSelect(options=names,value=names[:2],name='select variables to plot')

pn.Column(wdgt,
          hv.DynamicMap(lambda cols:plot_selection(cols,title='Using: `hv.DynamicMap`'),streams=dict(cols=wdgt)),
          pn.bind(lambda cols:plot_selection(cols,title='Using: `pn.bind`'),wdgt)
         )

```

[/uploads/default/original/2X/8/8c6e07a6e20d4741f292a67af3e2e74ec223d9ab.mp4](https://discourse.holoviz.org/uploads/default/original/2X/8/8c6e07a6e20d4741f292a67af3e2e74ec223d9ab.mp4)

panel: 1.0.0  
holoviews: 1.17.1  
hvplot: 0.8.4
