2016-12-30 6 views
1

У меня есть сюжет, как этот enter image description hereОтображение информации сюжет только тогда, когда курсор находится на нем - Matlab

Есть 30 линий на этом участке и каждая строка соответствует определенному объекту. Теперь я хочу отобразить все имя объекта. Но мне не нужна грязная легенда с 30 записями.

Я хочу, чтобы наведите курсор на любую строку (или используйте курсор данных), а затем должно появиться имя объекта.

Это можно сделать в Matlab. Благодаря!

ответ

1

Выполнение текста, который появляется, когда зависает над объектом выполнимо, но может быть весьма привлекательным. Для этого потребовалось бы установить WindowButtonMotionFcn callback для вашей фигуры, которая будет постоянно проверять CurrentPoint property фигуры, чтобы определить, была ли она в пределах ваших осей, представляющих интерес, и если да, то проверьте CurrentPoint property этих осей и вычислите, какой объект сюжетного объекта ближе всего.

Если вы готовы, чтобы позволить пользователю мыши, а не просто парения для отображения текста, что гораздо проще. Вы можете установить ButtonDownFcn callback каждой построенной строки для отображения текста в определенном месте. Вот пример, который создает два объекта строки и присваивает им функцию обратного вызова, которая будет отображать Tag линии, которая щелкнула в точке курсора:

function line_click_example 

    hAxes = axes('NextPlot', 'add', 'ButtonDownFcn', @clear_text); 
    hLines = line(hAxes, [1:10; 1:10].', [rand(10, 1) rand(10, 1)+1]); 
    set(hLines, 'ButtonDownFcn', @line_click_fcn, ... 
       'Tag', {'Line 1'; 'Line 2'}); 
    hText = text(hAxes, 0, 0, ''); 

    function line_click_fcn(hSource, ~) 
    cursorPosition = get(get(hSource, 'Parent'), 'CurrentPoint'); 
    set(hText, 'Position', cursorPosition(1, [1 2]), ... 
       'String', get(hSource, 'Tag')); 
    end 

    function clear_text(~, ~) 
    set(hText, 'Position', [0 0], 'String', ''); 
    end 

end 

Здесь я также установить ButtonDownFcn оси так что он очистит текстовый объект, а это означает, что щелчок по любой области осей, которая не находится над одной из двух линий, удалит отображаемый текст. Также обратите внимание, что с line_click_fcn и clear_text находятся nested functions, они оба имеют доступ к hText и смогут его модифицировать.