首页 > 解决方案 > 防止在使用数据着色器重新渲染图像时重新缩放颜色图

问题描述

我想在缩放时使用数据着色器的自动下采样和重新渲染来显示大图像。阅读有关 holoviews、bokeh 和 datashader 的文档和论坛,据我了解,最好通过 Holoviews 执行此操作,而不是直接使用 datashader 和 bokeh(如果不是这种情况,请告诉我)。

下面的代码非常适合在缩放时重新绘制图像分辨率,并且比渲染完整图像要快得多。但是,我似乎无法弄清楚如何避免在图像缩放时重新缩放颜色图范围。例如,当没有高强度区域在视野内时,放大到其中一个黑色区域最终会将其渲染为明亮。

我希望将颜色图范围固定为整个数组/图像的最小值和最大值(或接近这些值,理想情况下,我将拥有与 matplotlib 中的 vmin 和 vmax 相同的控制),并且不会随着图像的缩放而更新在。我没有看到任何控制这个的参数 要么regridhv.Image有可能实现吗?

import holoviews as hv
from holoviews.operation.datashader import regrid
from skimage import data


hv.extension('bokeh')

im = data.coins()
hv_im = hv.Image(im).opts(active_tools=['wheel_zoom'])
regrid(hv_im)

我也尝试过使用datashade而不是regrid,但结果相似。

标签: pythonbokehholoviewsdatashaderpyviz

解决方案


我在2017 年关于 Holoviews 问题跟踪器的评论中找到了我的答案。以下作品

regrid(hv_im).opts(clim=(im.min(), im.max()))

我尝试再次查看文档以查看是否在某处提到它。除了常见问题解答中的简短提及外,没有在搜索中找到任何内容。


推荐阅读