的曲線上有該圖30線和每行對應於特定的對象。現在我想顯示所有對象的名稱。但我不想要一個有30個條目的混亂的傳說。
我想要的是能夠將光標懸停在任何行(或使用數據光標),然後它應該出現對象的名稱。
這是可能做到的Matlab。謝謝!
的曲線上有該圖30線和每行對應於特定的對象。現在我想顯示所有對象的名稱。但我不想要一個有30個條目的混亂的傳說。
我想要的是能夠將光標懸停在任何行(或使用數據光標),然後它應該出現對象的名稱。
這是可能做到的Matlab。謝謝!
執行文本時出現在對象上懸停是可行的,但可以相當參與。這將需要爲你的圖形設置一個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
並且能夠修改它。