如何使用 xarray 数据集中额外分配的坐标作为 hvplot 中的悬停工具提示?

问题描述 投票:0回答:1

我在使用

xind
时尝试在工具提示中包含自定义坐标(
yind
hvplot.image()
)时遇到问题。

这是我的代码的最小可重现示例:

import hvplot.xarray

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

data = xr.DataArray(data=sample_data.T, coords=[("y", x_coord), ("x", y_coord)])

xindex = np.arange(len(x_coord))
yindex = np.arange(len(y_coord))
data = data.assign_coords(xind=("x", yindex))
data = data.assign_coords(yind=("y", xindex))

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,
)

尝试使用

xind
在工具提示中包含
yind
hover_cols=["xind","yind"]
坐标时,我遇到以下错误:

ValueError: 'y' is not in list
  

有什么方法可以让我在工具提示中使用 xind 和 yind 吗?

python-xarray holoviews hvplot
1个回答
0
投票

要在使用

hvplot.image()
时在工具提示中包含自定义坐标(xind 和 yind),您可以通过定义具有所需格式的 HoverTool 来创建自定义悬停工具提示。您可以通过以下方式更改代码来实现此目的:

import hvplot.xarray
import numpy as np
import xarray as xr
import holoviews as hv
from bokeh.models import HoverTool

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

data = xr.DataArray(data=sample_data.T, coords=[("y", x_coord), ("x", y_coord)])

xindex = np.arange(len(x_coord))
yindex = np.arange(len(y_coord))
data = data.assign_coords(xind=("x", yindex))
data = data.assign_coords(yind=("y", xindex))

# Create a custom hover tooltip
hover = HoverTool(tooltips=[("xind", "@xind"), ("yind", "@yind")])

plot = data.hvplot.image(
    z="value",
    x="x",
    y="y",
    cmap="gray",
    width=1200,
    height=300,
    framewise=True,
    rasterize=True,
    tools=[hover],  # Add the custom hover tool
)

plot.opts(xlabel="x (mm)", ylabel="y (m)")

在此修改后的代码中,我们创建一个自定义 HoverTool,其中包含 xind 和 yind 的工具提示。

hvplot.image()

中的工具参数设置为包含自定义悬停工具。
现在您的绘图应该显示带有自定义坐标的工具提示。

© www.soinside.com 2019 - 2024. All rights reserved.