2015-03-08 1 views
1

все! Это мой первый вопрос о stackoverflow! В Matlab я создаю биографию и визуализирую ее.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

Amazing! Спасибо огромное! –

+0

Пожалуйста, подумайте о принятии этого ответа (или других ответов, которые могут появиться), если это поможет. Для этого вы нажимаете галочку в верхнем левом углу в начале ответа –

Смежные вопросы