4

約6000アイテムの散布図があります。

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

GUIを使用して特定のポイントのインデックスを見つける方法はありますか?(データを拡大し、ポイントを生じさせた特定のインデックスを見つけたい)

4

2 に答える 2

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

結果:

ここに画像の説明を入力してください

参考までに、これをプログラムで実行したい場合は、ここにそれに関する優れた記事があります

于 2013-03-18T23:43:35.953 に答える
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は、選択した乱数のインデックスを保持します。

ワンライナーとして:

position = intersect(find(x == cursor_info.Position(1)), find(y == cursor_info.Position(2)));
于 2013-03-18T23:31:05.683 に答える