Python 向Holoviews绘图中的每个数据点添加文本注释
在Bokeh中,我可以通过使用Python 向Holoviews绘图中的每个数据点添加文本注释,python,bokeh,holoviews,Python,Bokeh,Holoviews,在Bokeh中,我可以通过使用标签集以编程方式向绘图中的每个点添加文本注释。下面我给出一个简单条形图的示例: 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_pe
标签集
以编程方式向绘图中的每个点添加文本注释。下面我给出一个简单条形图的示例:
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
然而,我不知道如何用HoloView实现同样的效果。我可以很容易地在没有注释的情况下绘制相同的条形图:
import holoviews as hv
hv.extension('bokeh')
p = hv.Bars(dat, kdims=['team'], vdims=['n_people'])
p
我可以添加一个文本标签,用hv.text
元素添加覆盖
p * hv.Text('a', 11, '37.0%')
但我不知道如何在不为每个数据点(条)分别显式调用hv.Text
的情况下标记每个条。问题似乎是hv.Text
与其他元素(例如hv.bar
)一样,不接受data
参数,而只接受x
和y
坐标。我的直觉是我应该能够做类似的事情
p * hv.Text(dat, kdims=['team'], vdims=['n_people_percent'])
感谢您的帮助 看起来这会将矢量化标签添加到hv.labels
,因此请尝试:
import holoviews as hv
hv.extension('bokeh')
p = hv.Bars(dat, kdims=['team'], vdims=['n_people'])
p * hv.Labels(dat, kdims=['team', 'n_people'], vdims=['n_people_percent'])
我们还没有添加矢量化的文本元素,但这样做相当简单。关于这一点有一些讨论,包括指向此类元素的实现的链接。现在,您可以简单地创建多个常规文本元素的覆盖。
import holoviews as hv
hv.extension('bokeh')
p = hv.Bars(dat, kdims=['team'], vdims=['n_people'])
p * hv.Labels(dat, kdims=['team', 'n_people'], vdims=['n_people_percent'])