Graphics | ![]() ![]() |
オブジェクトのコピー
関数copyobj
を使って、親オブジェクト間でオブジェクトをコピーすることができます。新しいオブジェクトは、そのParent
プロパティとそのハンドル番号のみがオリジナルのオブジェクトとは異なります。それ以外では、オリジナルのオブジェクトと全く同じです。結果が正しい親子関係を維持する限り、いくつかのオブジェクトを新しい親オブジェクトにコピーしたり、1つのオブジェクトをいくつかの新しい親オブジェクトにコピーしたりすることができます。
子オブジェクトをもつオブジェクトをコピーすると、MATLABはすべての子オブジェクトもコピーします。
例題 - オブジェクトのコピー
種々のデータをプロットし、各プロットにおいて、で決まるx-座標とy-座標をもつ点にラベルを付けることを考えます。関数
text
によって、x-軸とy-軸範囲で定義される座標内のラベルの位置を設定することができ、それによりTextを配置する処理が単純化されます。
text('String','\{5\pi\div4, sin(5\pi\div4)\}\rightarrow',... 'Position',[5*pi/4,sin(5*pi/4),0],... 'HorizontalAlignment','right')
このステートメントで、関数text
は、
Position
を設定します。HorizontalAlignment
をright
(デフォルトはleft
)に変更することによって、データ点をText文字列の右側に移動します。他のプロットにおいて同じ点に同じ文字列でラベルを付けるには、copyobj
を使って、Textをコピーします。最後のステートメントで、Textオブジェクトに対するハンドル番号を保存していないので、findobj
と'String'
プロパティを使ってそれを見つけます。
text_handle = findobj('String',...
'\{5\pi\div4,sin(5\pi\div4)\}\rightarrow');
プロットを作成した後で、ラベルを最初のプロットからコピーすることによって追加します。
copyobj(text_handle,gca).
この特別な例では、TextオブジェクトがAxesのデータ空間におけるそれらの位置を定義するという事実を利用しています。従って、TextのPosition
プロパティはプロット間で変更する必要はありませんでした。
![]() |
プロパティ値によるオブジェクトの検索 -- findobj | オブジェクトの削除 | ![]() |