【发布时间】:2020-03-24 16:00:26
【问题描述】:
当有一个函数生成指向 DynamicMap 的 NdOverlay 点时,我遇到了一些非常奇怪的事情,其中该函数与面板小部件相关联(我认为面板小部件并不重要)。
下面的代码是一个产生预期行为的工作示例。每当您更改小部件值时,都会生成一个新图,其中包含两组重叠的点,具有不同的颜色和各自的图例条目。图片如下代码所示。
a_widget = pn.widgets.Select(name='A', options=[1,2,3,4])
b_widget = pn.widgets.IntSlider(name='B', start=10, end=20, value=10)
widget_box = pn.WidgetBox(a_widget, b_widget, align='center')
@pn.depends(a=a_widget.param.value, b=b_widget.param.value)
def get_points(a, b):
return hv.NdOverlay({x: hv.Points(np.random.rand(10,10)) for x in range(1,3)})
points = hv.DynamicMap(get_points)
pn.Row(widget_box, points)
下面显示的第二个示例旨在证明在某些情况下您可能只想简单地返回一个空图,并且我在此示例中所做的方式与此示例中的方式相同: http://holoviews.org/gallery/demos/bokeh/box_draw_roi_editor.html#bokeh-gallery-box-draw-roi-editor
当a == 1 时,这段代码的结果是一个空图,但当a 的值不是1 时,结果很奇怪,如下图所示。
- 所有点都具有相同的颜色
- 例如,在更改滑块时,某些点会被冻结并且永远不会更改,而在上述工作示例中并非如此。
a_widget = pn.widgets.Select(name='A', options=[1,2,3,4])
b_widget = pn.widgets.IntSlider(name='B', start=10, end=20, value=10)
widget_box = pn.WidgetBox(a_widget, b_widget, align='center')
@pn.depends(a=a_widget.param.value, b=b_widget.param.value)
def get_points(a, b):
if a == 1:
return hv.NdOverlay({None: hv.Points([])})
else:
return hv.NdOverlay({x: hv.Points(np.random.rand(10,10)) for x in range(1,3)})
points = hv.DynamicMap(get_points)
pn.Row(widget_box, points)
【问题讨论】:
-
嗨 Martin,最好在此处发布指向您的 SO 问题的链接:gitter.im/pyviz/pyviz,以便全息视图的开发人员可以帮助您解决这个问题(和其他问题)
-
嗨。谢谢你的提示。我加入了房间并寻求帮助:)