1

我正在尝试创建一个自定义悬停工具,使用该工具获取绘图的 y 值并将该值映射到不同的值。

到目前为止,我可以想出的实现此功能的代码是

from bokeh.models import HoverTool
import holoviews as hv

df = pd.DataFrame(
    {
        "zero": [0, 0, 0, 0, 0, 0, 0],
        "one": [1, 1, 1, 1, 1, 1, 1],
        "two": [2, 2, 2, 2, 2, 2, 2],

    }
)

mapping = {i: c for i, c in enumerate(df.columns)}


def col_mapping(num):
    return mapping[int(num)]


hover = HoverTool(tooltips=[("x", "$x"), ("y", "$y")])

img = hv.Image((df.index, np.arange(df.shape[1]), df.T)).opts(tools=[hover])
img

x并且y将是浮点值。所以想法是将坐标映射到字典y中的对应值mapping

让我知道如何在悬停工具中获得新值,以便当值为 b/w 0 和 1 时

谢谢

4

1 回答 1

3

这是我的做法:

code = f"return ({json.dumps(mapping)})[Math.floor(special_vars.y)];"
hover = HoverTool(tooltips=[("x", "$x"), ("y", "$y"), ('mapped_y', '$y{0}')],
                  formatters={'$y': CustomJSHover(code=code)})

如果您需要比 更复杂的代码col_mapping,则必须使用 aColumnDataSource并将完全转换的列添加到其中。

于 2020-04-21T11:35:55.990 回答