2015-03-08 34 views
1

全部! 这是我在stackoverflow上的第一个问题! 在matlab中,我创建了一个biograph并将其可视化。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'); 

但我想知道如何定义回调函数点击一个特定的节点或边缘上定义的回调函数的所有笔记或所有边缘。

任何人都可以帮忙吗?谢谢!

回答

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) 
+0

令人惊叹!非常感谢! – 2015-03-09 07:58:27

+0

如果有帮助,请考虑接受此答案(或其他可能出现的答案)。为此,请单击答案开头左上角的刻度线 – 2015-03-09 10:14:32