2016-12-30 55 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_fcnclear_textnested functions,他們都將有權訪問hText並且能夠修改它。

相關問題