使用 Holoviews 和 Bokeh 绘制 10 亿个点,需要捕捉 lasso 几何体以获得所选点

问题描述

我对 Holoviews/DataShader/bokeh 非常陌生,正在为研究项目分析这些库。 我需要在散点图中绘制 10 亿个图,然后在图的套索上捕获选定的点,最好是选择的几何形状。

我确实遇到过这个例子——http://holoviews.org/reference/streams/bokeh/Selection1D_points.html 我们需要通过 DynamicMap 将您的选择流链接到 holoviews 元素。然后,选择将保存您选择的索引。

以下是我尝试并成功获取几何图形的内容,但绘图变得非常缓慢,如果超过 100 万个点,我开始出现浏览器内存问题,而且套索也非常缓慢。

I have a dataframe with 3 columns x,y,pred
And this code gives me the plot
points = hv.Points(df)
datashaded = hd.datashade(points,aggregator=ds.count_cat('pred')).redim.range(x=(xmin,xmax),y=(ymin,ymax)).opts(
    width=600,height=600,tools=['Box_select','lasso_select','hover'])

# Declare points as source of selection stream
lasso = streams.Lasso(source=points)


def lassocallback(geometry):
    if geometry is not None:
        with open('coordinates.txt','w') as f:
            np.savetxt(f,geometry)
    return points
# Final Plot

datashaded + hv.DynamicMap(lassocallback,streams=[lasso]).opts(width=600,'hover'])

此外,我还得到了两个图,因为 hv.DynamicMap 本身不会显示这些点,我如何才能为此得到一个图。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)