Holoviews:如何将多个 RGB 图像包装到一个数据集中并正确显示它们?
Holoviews: How to wrap multiple RGB images into a Dataset and display them correctly?
我有一个 RGB 图像数据集作为 numpy array
形状 (n, height, width, 3)
。我想将数据包装到 hv.Dataset
中并将其可视化(使用 bokeh
),这样:
- 滑块可用于 select
n
张图片中的一张。
- 每张图片都以正确的纵横比和方向显示。
我主要对没有 xarray
的解决方案感兴趣。
这样的事情应该可行,但我认为可能有更简洁的方法声明 hv.Dataset
包装输入数组:
import numpy as np, holoviews as hv
hv.extension('bokeh')
x,y = np.mgrid[-50:51, -100:101] * 0.1
def ms(k):
r = 0.5*np.sin(np.pi +k*x**2+y**2)+0.5
g = 0.5*np.sin(x**2+k*y**2)+0.5
b = 0.5*np.sin(np.pi/k+x**2+y**2)+0.5
return np.dstack([r,g,b])
a = np.stack([ms(i) for i in [1,2,3,4]])
hv.HoloMap({i:hv.RGB(a[i-1,:,:,:], bounds=(-1,-0.5,1,0.5)).opts(data_aspect=1) for i in [1,2,3,4]})
我有一个 RGB 图像数据集作为 numpy array
形状 (n, height, width, 3)
。我想将数据包装到 hv.Dataset
中并将其可视化(使用 bokeh
),这样:
- 滑块可用于 select
n
张图片中的一张。 - 每张图片都以正确的纵横比和方向显示。
我主要对没有 xarray
的解决方案感兴趣。
这样的事情应该可行,但我认为可能有更简洁的方法声明 hv.Dataset
包装输入数组:
import numpy as np, holoviews as hv
hv.extension('bokeh')
x,y = np.mgrid[-50:51, -100:101] * 0.1
def ms(k):
r = 0.5*np.sin(np.pi +k*x**2+y**2)+0.5
g = 0.5*np.sin(x**2+k*y**2)+0.5
b = 0.5*np.sin(np.pi/k+x**2+y**2)+0.5
return np.dstack([r,g,b])
a = np.stack([ms(i) for i in [1,2,3,4]])
hv.HoloMap({i:hv.RGB(a[i-1,:,:,:], bounds=(-1,-0.5,1,0.5)).opts(data_aspect=1) for i in [1,2,3,4]})