当使用datashader放大图像时,防止重新调整颜色图

时间:2019-08-11 00:49:02

标签: python bokeh holoviews datashader pyviz

我想使用datashader的自动降采样和缩放后重新渲染以显示大图像。在阅读有关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,但结果相似。

1 个答案:

答案 0 :(得分:0)

我从2017年的this comment中在Holoviews问题跟踪器中找到了答案。以下作品

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

我尝试再次浏览文档,看看是否有人提到它。除了简短的mention in the FAQ,没有在搜索中找到其他任何内容。