title: Add text annotations to each data point in Holoviews plot
body: <p>In Bokeh I am able to add a text annotation to each point in my plot programmatically by using <code>LabelSet</code>. Below I give an example for a simple bar plot:</p>
  
  <pre><code>import numpy as np
  import pandas as pd
  
  # Make some data
  dat = \
  (pd.DataFrame({'team':['a','b','c'], 'n_people':[10,5,12]})
      .assign(n_people_percent = lambda x: (x['n_people']/np.sum(x['n_people'])*100)
          .round(1).astype('string') + '%')
  )
  
  dat
  </code></pre>
  
  <p><a href="https://i.stack.imgur.com/yKOtS.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/yKOtS.png" alt="enter image description here"></a></p>
  
  <pre><code># Bar plot with text annotations for every bar
  from bkcharts import show, Bar
  from bkcharts.attributes import CatAttr
  from bokeh.models import (ColumnDataSource, LabelSet)
  
  source_labs = ColumnDataSource(data = dat)
  p = Bar(data = dat, label = CatAttr(columns = 'team'), values = 'n_people')
  labels = LabelSet(x = 'team', y = 'n_people',
      text = 'n_people_percent', source = source_labs)
  p.add_layout(labels)
  show(p)
  </code></pre>
  
  <p><a href="https://i.stack.imgur.com/OaHom.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/OaHom.png" alt="enter image description here"></a></p>
  
  <p>However I am not sure how to achieve the same thing with Holoviews. I can make the same bar plot without the annotations very easily:</p>
  
  <pre><code>import holoviews as hv
  hv.extension('bokeh')
  
  p = hv.Bars(dat, kdims=['team'], vdims=['n_people'])
  p
  </code></pre>
  
  <p><a href="https://i.stack.imgur.com/2QTml.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/2QTml.png" alt="enter image description here"></a></p>
  
  <p>I can add a single text label adding an Overlay with the <code>hv.Text</code> element</p>
  
  <pre><code>p * hv.Text('a', 11, '37.0%')
  </code></pre>
  
  <p><a href="https://i.stack.imgur.com/NCRX0.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/NCRX0.png" alt="enter image description here"></a></p>
  
  <p>But I have no idea how I can label each bar without explicitly calling <code>hv.Text</code> separately for every data point (bar). The problem seems to be that <code>hv.Text</code> does not accept a <code>data</code> argument like other elements e.g. <code>hv.Bars</code>, instead just <code>x</code> and <code>y</code> coordinates. My intuition would be that I should be able to do something like</p>
  
  <pre><code>p * hv.Text(dat, kdims=['team'], vdims=['n_people_percent'])
  </code></pre>
  
  <p>Any help with this appreciated!</p>