如何在Bokeh中使用悬停提示显示整数而非浮点数

25

我有一个简单的X-Y数据点图表。我希望我的Bokeh图显示每个数据点的整数值当我将鼠标悬停在其上时。我已经接近得到我想要的结果,但是当我将鼠标悬停在数据点上时,它显示了一个浮点数,然后更高一些,它使用科学计数法。有没有办法让悬停工具仅返回X和Y的整数值,而不使用科学计数法?

以下是一些示例代码:

from bokeh.plotting import *
from bokeh.models import HoverTool

x = range(1,101)
y = [i*i for i in x]

TOOLS = "pan,wheel_zoom,box_zoom,reset,save,box_select, hover"

p = figure(x_axis_label = "Days",
       y_axis_label = "Return",
       tools=TOOLS)
p.circle(x, y)

#adjust what information you get when you hover over it
hover = p.select(dict(type=HoverTool))
hover.tooltips = [
    ("Days", "$x"),
    ("Return", "$y"),
]

show(VBox(p))
2个回答

44

补充一下。我通过以下代码发现您可以控制小数点:

hover.tooltips = [
    ("Days", "@x{int}"), # this will show integer, even if x is float
    ("Return", "@y{1.11}"), # this will format as 2-decimal float
]

希望这有所帮助。


2
威尔,想问一下你是否知道如何对y进行缩放并进行格式化。例如,假设您想将y乘以100并报告为百分比。您有什么想法如何指定呢? - Chris
这很棒。你知道是否有关于这种日期格式的符号吗?我在文档中没有找到,你有没有一个链接可以提供吗?谢谢! - ryanjdillon
@Chris 抱歉,我不知道有没有百分比格式的标志。我猜你已经尝试过 Python 的格式化标志了吧?我的建议是在数据源中创建另一列并绘制该列,虽然不完美但可能会有所帮助。 - WillZ
1
@ryanjdillon 我认为我在他们的谷歌小组存档中找到了这些。不幸的是,据我所知,它不在文档中。我还没有追查源代码找出它是如何解析的,但它与传统的Python格式化字符串有点不同。然而,像“+1.11”这样的东西仍然有效,即在数字前面放置符号。 - WillZ

13

啊哈!使用@符号而不是$符号可以正常工作。

hover.tooltips = [
    ("Days", "@x"),
    ("Return", "@y"),
]

谢谢分享这个信息,我也遇到了同样的问题。 - Luis Miguel
是的,$x 是鼠标指针内置画布数据点,而 @x 则是无论您将光标悬停在字形的哪个位置,都是实际数据点。 - jxramos

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接