我在使用
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 吗?
要在使用
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()
中的工具参数设置为包含自定义悬停工具。 现在您的绘图应该显示带有自定义坐标的工具提示。