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)