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

조회 수: 35 (최근 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 CenterFile Exchange에서 ライン プロット에 대해 자세히 알아보기

제품


릴리스

R14SP2

Community Treasure Hunt

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

Start Hunting!