散景中可能的更新导致一个奇怪的生成器错误

Fra*_*gas 2 python bokeh

我的以下代码段正常工作:

import numpy as np
import bokeh.plotting as bp
from bokeh.models import HoverTool 
bp.output_file('test.html')

fig = bp.figure(tools="reset,hover")
x = np.linspace(0,2*np.pi)
y1 = np.sin(x)
y2 = np.cos(x)
s1 = fig.scatter(x=x,y=y1,color='#0000ff',size=10,legend='sine')
s1.select(dict(type=HoverTool)).tooltips = {"x":"$x", "y":"$y"}
s2 = fig.scatter(x=x,y=y2,color='#ff0000',size=10,legend='cosine')
fig.select(dict(type=HoverTool)).tooltips = {"x":"$x", "y":"$y"}
bp.show()
Run Code Online (Sandbox Code Playgroud)

no liine s1.select ...返回一个生成器,并给我以下错误:

AttributeError: 'generator' object has no attribute 'tooltips'
Run Code Online (Sandbox Code Playgroud)

服务器更新已针对正在运行此代码的进程进行。散景可能已被更新。我最快的解决方法是什么?还是我缺少一个错误?

big*_*dot 5

前一段时间,字形方法已更改为返回字形渲染器,而不是返回绘图。这使得配置字形渲染器的视觉属性变得更加容易。返回图是多余的,因为用户通常已经有对该图的引用。但是您要在绘图中搜索悬停工具,而不是字形渲染器,因此您需要执行以下操作:

fig.select(HoverTool).tooltips = {"x":"$x", "y":"$y"}
Run Code Online (Sandbox Code Playgroud)

请注意,使用字典意味着无法保证工具提示的顺序。如果您关心订单,则应使用元组列表:

fig.select(HoverTool).tooltips = [("x", "$x"), ("y", "$y")]
Run Code Online (Sandbox Code Playgroud)

然后,工具提示行将按照给定的顺序从上到下显示。