2016-07-04 17 views
1

プロット内でデータカーソルを使用するときに必要なものを表示するための独自の関数を作成しようとしています。より正確には、私は同じ数字の中に多くのプロットを持っており、カーソルがそれらの上にあるときにこれらのプロットのすべての正確な名前を表示したいと思います。データカーソルを使ってプロット内の線の名前を視覚化するMatlab UpdateFcn

EDIT:例:私は1つの図で100個の関数をplottetし、これらの関数にはf1、f2、f3、....、f100という名前があることを想起しましょう。私がプロットを見ているとき、私はこれらの機能のすべての単一の名前をデータカーソルで見ることができるようにしたいと思います。例えば、最後の関数の上にマウスを置いて、データカーソルにポイントの座標の代わりに文字列 'f100'を表示したいとします。

MyFunctionのはoutput_txtに私が表示したい文字列を与える必要があることをカスタム関数である
dcm_obj = datacursormode(gcf); 
% Set the UpdateFcn to the function myCursor 
set(dcm_obj, 'UpdateFcn', @myfunction); 

を私はこのように「UpdateFcn」を使用する必要があります見てきたことを行うには

function output_txt = myfunction(~,event_obj) 
% ~   Currently not used (empty) 
% event_obj Object containing event data structure 
% output_txt Data cursor text (string or cell array 
%    of strings) 

event_objにはPositionとTargetがあり、Positionはcursortheのx、y、(z)座標を指定する配列で、Targetはデータポイントを含むグラフィックスオブジェクトのハンドルです。で

詳細情報:http://it.mathworks.com/help/matlab/ref/datacursormode.html

は、私は可能な解決策を考えた:私は、グラフィックスのハンドルでそれをプロットしていながら、すべてのプロットの名前で文字列を記憶するデータポイント(ターゲット)を含むオブジェクト、しかし、それが可能かどうか、もしそうなら、私はそれをどうやって行うのか分かりません。

他に解決策はありますか?

+0

それは私が願って、あなたが私たちを示した場合は、期待したもの、あなたのデータカーソルが見えるようにし、どのような情報あなたが – Suever

+0

編集が必要に役立つだろうが、今、これらの名前を行う –

+0

明らかですから来る?各プロットの '' DisplayName''を作成し、 '' UpdateFcn'の中から取得することができますか? – Suever

答えて

1

plotを呼び出すときに名前を知っているので、プロットオブジェクトのDisplayNameフィールドまたはUserDataフィールドに名前を格納できます。これにより、UpdateFcnコールバック内からアクセスできます。 DisplayNameの一例として、

plot(rand(10, 1), 'DisplayName', 'a'); 
plot(rand(10, 1), 'DisplayName', 'b'); 
plot(rand(10, 1), 'DisplayName', 'c'); 

function updateFcn(~, event_obj) 
    name = get(event_obj.Target, 'DisplayName'); 

    % Do something with name here 
end 
関連する問題