用户界面- Matlab GUI:如何从直方图bin返回表的行



我开发了一个Matlab GUI,可以将数据从表格绘制成直方图。

我希望能够单击一个bin,并从表中提取与该bin中的数据相对应的行。当使用数据游标时,单击一个bin将显示bin中心和边缘以及bin计数。我认为必须有一种方法来返回分组在这些箱子中的实际数据。

我已经研究过ginput,但我不确定这是否是正确的轨道,或者我如何使用它来为我的利益。

任何建议或指导是感激的!

示例表:

'Col1'    'Col2'    'Col3'
Name1       1       Thing1
Name2       5       Thing2
Name3       2       Thing3
Name4       1       Thing4
Name5       8       Thing5
Name6       10      Thing6

示例代码:

data = table.Col2;
hist(data); %histogram defaults to 10 bins

我希望能够主动单击直方图中的bin,并将相应的行存储到另一个表中。

因此,对于上面的数据,直方图中的第一个bin包含表中的第1行和第4行-一旦我单击该bin,我希望看到它存储在另一个表中:
'Col1'    'Col2'    'Col3'
Name1       1       Thing1
Name4       1       Thing4

如果我单击任何其他箱子,也会发生同样的情况,它们各自的数据应该存储到表中。

实际数据是几百行和多个其他列。Col2中的数据都是数字,但不一定是整数。

您可以将图形的ButtonDownFcn属性设置为一个函数,该函数将获得具有X坐标的CurrentPoint

set(gcf,'ButtonDownFcn',@your_bd_function)

(当然,您可以使用任何数字句柄代替gcf)

然后在函数

curpnt = get(gca,'CurrentPoint'); % returns [x y] vector where you clicked

(这里再次使用适当的轴句柄)

如果每个箱子有一个值,并且是整数,那么剩下的就很简单了:

out = atable(data==round(curpnt(1)),:);

对于更复杂的情况,您需要找到箱子的边界并相应地选择数据。如果将hist中的数据返回为[y,x] = hist(data,bin);

,则会更容易。

相关内容

  • 没有找到相关文章

最新更新