2012-04-20 41 views
3

在Matlab中2011B,我有一個多維矩陣將被最初呈現爲它的尺寸爲2的2D圖。我希望用鼠標左鍵點擊標記。點擊標記繪製一個由點擊值切分的其他維度的新數字。製作點擊MATLAB情節標記情節子圖

這個問題是關係到Matlab: Plot points and make them clickable to display informations about it但我想運行一個腳本,不只是彈出數據有關單擊點。

谷歌搜索暗示ButtonDownFcn可以使用,但我發現例子需要手動繪製每個點和附加的處理程序,例如:

hp = plot(x(1), y(1), 'o'); 
set(hp, 'buttondownfcn', 'disp(1)'); 

由於有在主圖表許多標記,是有可能只需將一個處理程序附加到整個曲線上,並使用索引(優選)或點擊標記的座標調用子圖繪圖函數?

回答

3

這是你需要什麼的想法,而應該幫助你開始,如果我理解您的需求。

在這種情況下,當您選擇一條曲線,它會在底部插曲保留顏色繪製。

function main 
subplot(211) 
h = plot (peaks); 

set (h,'buttondownfcn', @hitme) 
end 

function hitme(gcbo,evendata) 
subplot (212) 
hold on; 

col = get (gcbo,'Color'); 
h2 = plot (get (gcbo,'XData'),get (gcbo,'YData')); 
set (h2,'Color', col) 

pt = get (gca, 'CurrentPoint'); 
disp (pt); 
end 

您可以通過簡單地在hitme函數寫get(gcbo)探索您的GET選項。

+0

感謝。雖然您的示例顯示瞭如何獲得3D數據的2D片段,但我更感興趣的是獲取單擊的2D圖形標記的索引。例如,在下面修改您的代碼,單擊任何標記打印相同的XData和YData。我想獲得點擊標記的索引(1,2,3等)。 function main data = peaks; H =情節(1:大小(數據,2),數據(1,:), '鄰'); 集(H, 'buttondownfcn',@hitme) 結束 功能hitme(gcbo,evendata) GET(gcbo, '擴展數據') GET(gcbo, 'YDATA') 結束 – Gnubie 2012-04-24 12:50:23

+0

如果你想要的是點,添加'pt = get(gca,'CurrentPoint');',如上所示。它會給你一個3D點,所以根據你的需要,只需使用第一行。 – Rasman 2012-04-24 13:42:14

+0

非常感謝!它給我的是座標,而不是標記的索引,但是由於我知道原始矩陣,我可以從x座標計算索引,例如,圓(pt(1))。 – Gnubie 2012-04-25 16:18:54