Matlab定义回调函数,用于鼠标点击传记

时间:2015-03-08 21:59:11

标签: matlab matlab-figure matlab-guide

一切! 这是我关于stackoverflow的第一个问题! 在matlab中,我创建了一个传记并将其可视化。

cm = [0 1 1 0 0;1 0 0 1 1;1 0 0 0 0;0 0 0 0 1;1 0 1 0 0];
bg1 = biograph(cm);
view(bg1)

现在我想在单击某个边或节点时定义回调函数。我从here发现我可以使用

为所有音符或所有边缘定义回调函数
set(bg1, 'NodeCallback', 'NodeCallback_dblclick');

但我想知道如何定义用于单击特定节点或边缘的回调函数。

任何人都可以提供帮助?谢谢!

1 个答案:

答案 0 :(得分:0)

我正在考虑这个答案中的节点。对于边缘,它将是相似的。

您需要在回调函数中处理节点区别。此功能对所有节点是通用的,但可以知道点击了哪个节点,因为节点作为输入传递。在此函数中,您可以检查节点的ID属性,并根据具体情况做出不同的反应。

所以,首先定义回调函数:

function node_callbacks(node)
switch node.ID
case 'Node 1'
    disp('Hello, I''m node 1');
case 'Node 2'
    disp('What''s up? This is node 2');
case 'Node 3'
    disp('Hi! You''ve clicked node 3');
case 'Node 4'
    disp('I''m node 4 and I don''t want to talk!');
case 'Node 5'
    disp('Who dares bother node 5??');
end

然后将其设置为节点的回调函数。在查看图表之前,您应该这样做:

cm = [0 1 1 0 0;1 0 0 1 1;1 0 0 0 0;0 0 0 0 1;1 0 1 0 0];
bg1 = biograph(cm);
set(bg1, 'NodeCallbacks', @node_callbacks)
view(bg1)