如何获取Hovertool以显示Bokeh中绘制的数据框中的另一个值?

时间:2018-07-19 03:25:01

标签: python python-3.x anaconda data-visualization bokeh

我正在尝试在Python Bokeh中绘制一个抖动图,并且该图显示得很好。我在获取悬停工具来显示我想要的东西时遇到麻烦。该图在y轴上显示呼叫数量,在x轴上显示部门编号。我试图获取悬停工具以显示每个点的关联主题。这是我的代码:

p6 = figure(title = 'Number of Calls by Topic for Busiest Departments',
        y_range=(0,600), tools="hover", tooltips="@Topic")

for i, d in enumerate(list(df_6['Dept'].unique())):
    y = df_6[df_6['Dept'] == d][['Count', 'Topic']]
    color = colors[i  % len(colors)]
    p6.circle(x={'value': i, 'transform': Jitter(width=0.4)}, y=y['Count'], 
    color=color)

因此,我反复为每个部门创建子数据框,并保持与每个点关联的“主题”。显示图时,悬停工具仅显示???而不是主题。如何显示与每个点相关的主题?谢谢!

1 个答案:

答案 0 :(得分:1)

您是针对单个点绘制单个circle吗?即使只有很少的分数,这也将是非常低效的。诸如circle之类的散景字形旨在并优化为一次可处理整个数据列表/数组。

此外,如果您只是将文字值直接传递给circle,那么Bokeh便知道将它们发送到浏览器。如果您要发送额外的数据列,例如要驱动悬停工具提示,那么您必须告诉Bokeh这些列需要发送,方法是将它们明确地放在数据源中,并将该数据源作为source参数传递给字形函数。为方便起见,您还可以将熊猫数据帧直接作为source传递,它们将自动转换为Bokeh ColumnDataSource

由于您的代码不完整,因此无法为您提供直接的解决方案。但是,这是一个完整的示例,该示例具有悬停和抖动特性,可与Bokeh> = {0.13.0一起使用,并且可以说明得足够:

from bokeh.transform import jitter
from bokeh.plotting import figure, show
from bokeh.sampledata.autompg import autompg

p = figure(plot_width=600, plot_height=300, tooltips="MPG: @mpg")
p.circle(x=jitter('yr', width=0.6, range=p.x_range), y='mpg',
         alpha=0.6, size=10, source=autompg)

show(p)

enter image description here