You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在hvplot.image的hover提示中使用xarray自定义坐标xind、yind?

解决hvplot.image自定义坐标hover提示报错问题

问题根源

你的代码中维度命名与坐标序列的对应关系存在混淆,加上rasterize=True时的栅格化处理,导致hover提示无法正确匹配自定义坐标字段。以下是几种可行的解决方案:


方案1:修正维度与坐标的对应关系

调整数据创建逻辑,让x/y维度与同名坐标序列绑定,确保自定义坐标xind/yind正确关联到对应维度:

import numpy as np
import xarray as xr
import hvplot.xarray

sample_data = np.random.rand(500, 128)
y_coord = np.linspace(0, 15, 500)
x_coord = np.linspace(0, 1, 128)

# 让x/y维度对应同名坐标,避免混淆
data = xr.DataArray(data=sample_data, coords=[("y", y_coord), ("x", x_coord)])

# 自定义坐标绑定到对应维度
xind = np.arange(len(x_coord))
yind = np.arange(len(y_coord))
data = data.assign_coords(xind=("x", xind))
data = data.assign_coords(yind=("y", yind))

plot = data.hvplot.image(
    z="value",
    x="x",
    y="y",
    cmap="gray",
    width=1200,
    height=300,
    hover=True,
    xlabel="x (mm)",
    ylabel="y (m)",
    framewise=True,
    rasterize=True,
    hover_cols=["xind", "yind"]  # 可正常添加自定义坐标
)

方案2:手动添加自定义HoverTool(保留rasterize)

如果必须使用栅格化渲染,可关闭默认hover,手动添加Bokeh的HoverTool指定提示内容:

from bokeh.models import HoverTool

# 关闭默认hover
plot = data.hvplot.image(
    z="value",
    x="x",
    y="y",
    cmap="gray",
    width=1200,
    height=300,
    hover=False,
    xlabel="x (mm)",
    ylabel="y (m)",
    framewise=True,
    rasterize=True,
)

# 自定义hover提示内容
custom_hover = HoverTool(
    tooltips=[
        ("x", "$x{0.00}"),
        ("y", "$y{0.00}"),
        ("value", "@image{0.00}"),
        ("x索引", "@xind"),
        ("y索引", "@yind"),
    ]
)

plot = plot.opts(tools=[custom_hover])

方案3:移除rasterize简化实现

如果数据量不大无需栅格化,直接去掉rasterize=True参数,再设置hover_cols=["xind","yind"]即可正常显示自定义坐标。

内容的提问来源于stack exchange,提问作者dcoder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 10:34:53