1

我对能够以交互方式标记数据非常感兴趣。我有包含许多标识符的大型数据集,并希望一一显示,然后给出有关质量的标签。一个类似的用例是相关的,我想在全息视图中为给定标识符选择部分数据,并分配一个以后可用于机器学习的标签。

下面是一个简化的案例。我有一个数据框,可以按 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”为每个选定的组存储它的编辑
4

0 回答 0