我对能够以交互方式标记数据非常感兴趣。我有包含许多标识符的大型数据集,并希望一一显示,然后给出有关质量的标签。一个类似的用例是相关的,我想在全息视图中为给定标识符选择部分数据,并分配一个以后可用于机器学习的标签。
下面是一个简化的案例。我有一个数据框,可以按 id 'id' 分组。对于每个唯一的“id”,我想显示数据并分配一个质量“qual”,该质量“qual”可以与数据一起存储,也可以存储在另一个具有“id”和“qual”的数据表中。我已经进入了以下几点:
- 能够有一个面板选择框来选择数据框的子集
- 能够制作可编辑的全息视图表
- 能够有一个下拉选择质量
我不能
- 将 id_select 小部件完全链接到 holoviews 表。
- 将编辑内容存储在可编辑表中
- 使 qual_widget 编辑 holoviews 表或将任何选择存储在 qual_widget 中。
我一直在想不同的方法。曾尝试使用 pn.depends 依赖于另一个函数的面板函数,但不知道如何将更改提取到数据结构中。
目的:
- Beeing 能够将编辑内容存储在 holoviews 可编辑表中
- 正确存储指定的质量
代码
import holoviews as hv
import param
from holoviews import streams
from holoviews import opts
from holoviews.plotting.links import DataLink
hv.extension('bokeh', logo=None)
import numpy as np
import panel as pn
# data
ids = ['a']*3 +['b']*2 + ['c']*6
xs = np.linspace(0, 10, 11)
ys = np.sin(xs)
qs = ['Good']*2 + ['Poor']*9
# define holoviews table
table = hv.Table((ids, xs, ys,qs),'id',['x', 'y','qual']).opts(editable=True)
# list of unique ids
ids_unique = sorted(set(ids))
定义下拉小部件并将面板应用程序放在一起
id_widget = pn.widgets.Select(options=ids_unique, value=ids[0], name='select groupby id')
qual_widget = pn.widgets.Select(options=sorted(set(qs)), value='', name='define quality to be stored')
def sel_table(table, select_id):
return table.select(id=select_id)
my_panel = pn.Row(sel_table(table, id_widget.value), pn.Column(id_widget, qual_widget))
my_panel
如果有可能,我会很高兴:
- 链接上面 my_panel 的所有元素
- 将编辑直接存储在 holoviews 表中
- 让 qual_widget 按“id”为每个选定的组存储它的编辑