将HoloViews“套索工具”选择导出到Pandas / CSV

时间:2019-05-17 13:24:34

标签: python pandas bokeh holoviews pyviz

我正在尝试使用holoviews/hvplot中的散点图来探索一些数据,然后将我选择的内容导出到文件中...基本上是为了标记和/或展示给专家。

我能够制作散点图和链接的表,并显示从套索工具中选择的点。但是我不知道如何只显示选定的点,然后将其导出到Pandas dataframe或我可以使用的其他任何东西。

我的代码如下所示。

points = df.hvplot.scatter(x="comp1", y="comp2", c="label", width=1000, height=1000).opts(tools=["hover", "lasso_select", "box_select"])
table = hv.Table(points, ["comp1", "comp2"], "label")
DataLink(points, table)
(table + points)

我看到points有一个select方法可用,但似乎可以显示所有要点。我想念什么?

TIA

1 个答案:

答案 0 :(得分:2)

select方法允许您在Py​​thon中按值应用选择,因此与您在bokeh中执行的选择无关。如果要访问使用选择工具所做的选择,可以查看Selection1D stream。诸如此类的链接流提供了一种从Python中的Javascript访问值的机制。在您的示例中,您可以执行以下操作:

points = df.hvplot.scatter(x="comp1", y="comp2", c="label", width=1000, height=1000).opts(tools=["hover", "lasso_select", "box_select"])
table = hv.Table(points, ["comp1", "comp2"], "label")
DataLink(points, table)
sel = hv.streams.Selection1D(source=points)
(table + points)

最后在一个新单元格中,您可以使用以下方法访问和保存选择:

points.iloc[sel.index].data.to_csv('selected.csv')