2012-04-20 16 views
3

Matlab 2011bでは、最初に2次元の2次元プロットとして表示される多次元行列があります。マーカをマウスの左ボタンでクリック可能にしたい。マーカーをクリックすると、クリックされた値でスライスされた他の寸法の新しい図形が描画されます。クリックして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)を書き込むことによって取得するためのオプションを探索することができます。

+0

ありがとうございます。あなたの例は、私が3Dデータの2Dスライスを得る方法を示していますが、私がクリックした2Dグラフのマーカーのインデックスを取得することにもっと興味があります。たとえば、以下のコードを変更すると、マーカーをクリックすると同じXDataとYDataが出力されます。代わりにクリックしたマーカーのインデックス(1、2、3など)を取得したいと思います。 ファンクションメイン data = peaks; h = plot(1:size(data、2)、data(1、:)、 'o-'); セット(H 'のButtonDownFcn'、@hitme) 終了 関数hitme(関数gcbo、evendata) のget(関数gcbo 'のXData') のget(関数gcbo 'YDataを') エンド – Gnubie

+0

あなたが望むすべてがある場合上記のように、 'pt = get(gca、 'CurrentPoint');'を追加します。それは3Dポイントを与えるので、必要に応じて、最初の行を使用します。 – Rasman

+0

多くの感謝!それは私にマーカのインデックスではなく座標を与えますが、元のマトリックスを知っているので、私はx座標からインデックスを計算できます。ラウンド(pt(1))。 – Gnubie

関連する問題