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

74 ビュー (過去 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 件)

カテゴリ

Help Center および File Exchangeライン プロット についてさらに検索

製品


リリース

R14SP2

Community Treasure Hunt

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

Start Hunting!