Matlab定义鼠标点击传记的回调函数
Matlab define callback function for mouse click on a biograph
全部!
这是我在 Whosebug 上的第一个问题!
在 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');
但我想知道如何定义点击特定节点或边的回调函数。
有人可以帮忙吗?谢谢!
我正在考虑这个答案中的节点。对于边缘,它会是相似的。
您需要在回调函数中处理节点区分。这个函数对所有节点通用,但是可以知道哪个节点被点击了因为节点是作为输入传递的。例如,在此函数中,您可以检查节点的 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)
全部! 这是我在 Whosebug 上的第一个问题! 在 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');
但我想知道如何定义点击特定节点或边的回调函数。
有人可以帮忙吗?谢谢!
我正在考虑这个答案中的节点。对于边缘,它会是相似的。
您需要在回调函数中处理节点区分。这个函数对所有节点通用,但是可以知道哪个节点被点击了因为节点是作为输入传递的。例如,在此函数中,您可以检查节点的 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)