プロット表示されたグラフにおいて、任意のラインを一番上に表示させる方法はありますか?
70 ビュー (過去 30 日間)
古いコメントを表示
MathWorks Support Team
2013 年 10 月 25 日
回答済み: MathWorks Support Team
2013 年 10 月 25 日
プロット表示されたグラフにおいて、任意のラインを一番上に表示させる方法はありますか?
採用された回答
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 件のコメント
その他の回答 (0 件)
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!