我正在尝试在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)
因此,我反复为每个部门创建子数据框,并保持与每个点关联的“主题”。显示图时,悬停工具仅显示???而不是主题。如何显示与每个点相关的主题?谢谢!
答案 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)