首页 > 解决方案 > 坐标系未在 holoviews 的 DynamicMap 中更新

问题描述

我尝试在全息视图中实现交互式直方图,您可以在其中更改上限(因此我可以决定是否要查看异常值)。我使用散景作为后端。

但不幸的是,调整滑块只会重新计算直方图,但不会调整 x 和 y 坐标,因此您必须手动放大/缩小才能看到更改。这是正常行为吗?

我给你一个最小的例子:

import numpy as np
import holoviews as hv
from holoviews import opts
hv.extension('bokeh')

a=np.array([1,1,11,1,1,1,1,1,1,1,2,2,2,2,2,5,5,5,30])
def hist_creater(upper_limit):
    frequencies, edges=np.histogram(a,range=(0,upper_limit),bins=10)
    return hv.Histogram((edges, frequencies))
    
dmap=hv.DynamicMap(hist_creater,kdims=["upper_bound_for_weight"]).redim.range(upper_bound_for_weight=(10,100))
dmap.opts(width=300)          

标签: pythonhistogrambokehholoviews

解决方案


请注意,如果您选择滚动缩放工具,您已经可以在散景中缩放轴以查看您喜欢的任何区域。因此,您不一定需要为此目的使用单独的小部件,但也许我误解了这里的目标。

在任何情况下,如果您希望为此 DynamicMap 中的每个新帧重新计算轴边界,只需指定dmap.opts(width=300, framewise=True). 默认情况下,它会尝试保持您的初始范围相同,以便您可以看到数据的变化,但framewise=True它会告诉它每次数据更改时自动调整范围。


推荐阅读