1

我对 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,height=600,tools=['box_select', 'lasso_select','hover'])

结果我也得到了两个图,因为单独的 hv.DynamicMap 不会显示这些点,我如何才能得到一个图。

4

0 回答 0