2013-03-18 88 views
4

我有一個約6000個項目的散點圖。如何從matlab中的大散點圖中找到索引?

x = rand(1,6000); 
y = rand(1,6000); 
scatter(x,y) 

有沒有辦法找到使用GUI的給定點的索引? (我們放大到數據,並希望找到那個給人們帶來了一點具體的指標)

回答

6

這裏是一個非常簡單的解決方案:

打開一個陰謀>數據光標>編輯短信更新功能

設置文本更新功能:

function output_txt = myFunction(obj,event_obj) 
% Display the position of the data cursor 
% obj   Currently not used (empty) 
% event_obj Handle to event object 
% output_txt Data cursor text string (string or cell array of strings). 

pos = get(event_obj,'Position'); 

% Import x and y 
x = get(get(event_obj,'Target'),'XData'); 
y = get(get(event_obj,'Target'),'YData'); 

% Find index 
index_x = find(x == pos(1)); 
index_y = find(y == pos(2)); 
index = intersect(index_x,index_y); 

% Set output text 
output_txt = {['X: ',num2str(pos(1),4)], ... 
       ['Y: ',num2str(pos(2),4)], ... 
       ['Index: ', num2str(index)]}; 

% If there is a Z-coordinate in the position, display it as well 
if length(pos) > 2 
    output_txt{end+1} = ['Z: ',num2str(pos(3),4)]; 
end 

結果:

enter image description here

僅供參考,如果你想以編程方式做到這一點,那麼這裏就可以了here的好文章。

+0

如果它在該x值處隨機化了多個座標,該怎麼辦?不太可能,但可能會發生。 – 2013-03-18 23:52:19

+0

@Ben我想過這個,你也可以使用y座標數據......我會更新它。發生這種情況的可能性「幾乎可以肯定」爲零。 – Justin 2013-03-18 23:55:23

+1

注意:如果使用{x = get(get(event_obj,'Target'),'XData');}而不是上面的行,則可以在任何散點圖上進行此操作,而不僅僅是使用x /上面的y基本命名空間約定。 – John 2013-03-20 20:46:46

0

可以使用X,Y位置搜索點:

%export the cursor to the workspace 

possibleXpositions = find(x == cursor_info.Position(1)); 
possibleYPositions = find(y == cursor_info.Position(2)); 
position = intersect(possibleXpositions, possibleYPositions); 

位置將持有指數您選擇的隨機數字。

作爲一個班輪:

position = intersect(find(x == cursor_info.Position(1)), find(y == cursor_info.Position(2))); 
相關問題