プロット表示されたグ​ラフにおいて、任意の​ラインを一番上に表示​させる方法はあります​か?

133 ビュー (過去 30 日間)
MathWorks Support Team
MathWorks Support Team 2013 年 10 月 25 日
回答済み: MathWorks Support Team 2013 年 10 月 25 日
プロット表示されたグラフにおいて、任意のラインを一番上に表示させる方法はありますか?

採用された回答

MathWorks Support Team
MathWorks Support Team 2013 年 10 月 26 日
ラインオブジェクトは、実行を行った順に表示されますので、一番最後に実行したものが一番上に表示されます。
また、オブジェクトの表示の順番は、軸オブジェクトのChildrenプロパティ値のベクトルの順番で決まっています。ベクトルの一番目の要素が一番最後に表示された(一番上に表示された)オブジェクトのハンドル番号となっています。
既に表示してあるラインの順番を変更する場合は、軸オブジェクトのChildrenプロパティ値のベクトルの順番を変更し、一番上に表示するオブジェクトのハンドル番号を1番目の要素に入れ替えて頂きます。
下記にchildrenプロパティの順番を変更し、ラインの表示を変更する一例として、青色と赤色のラインが重なって表示されている下図のfigure において、青色のラインを上に表示させます。
なお、上図を表示させたコマンドは下記です。
x = 0:pi/20:2*pi;
y1 = [sin(x(1:20)), sin(x(20))*ones(1,21)];
y2 = sin(x);
% グラフィックス表示
figure
plot(x,y1,'b',x,y2,'r','linewidth',3)
xlim([0 2*pi])
次に、青色のラインを上に表示させる処理を記述します。
% オブジェクトのハンドル番号を検出
h = get(gca,'Children'); % 軸オブジェクトの子オブジェクトを取得(複数の場合はベクトル)
hg = findobj(h,'type','line','Color','b'); % 青色のlineオブジェクトを検出
% オブジェクトの順番の入れ替え
% 青色ラインの要素を取得
ind = (h == hg); % h において hg であるかどうかを論理値で出力
% 青色ラインのハンドルを一番上に設定
newh = [h(ind); h(~ind)]; % h(ind):青色ラインのハンドル、h(~ind):それ以外のハンドル
set(gca,'children',newh) % Childrenプロパティ値の再設定(順番の入れ替え)
これを実行すると、下図のように変更されます。

その他の回答 (0 件)

製品


リリース

R14SP2

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!