一切! 这是我关于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');
但我想知道如何定义用于单击特定节点或边缘的回调函数。
任何人都可以提供帮助?谢谢!
答案 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)