subplotでy軸のラベル位置を合わせる方法

조회 수: 30 (최근 30일)
ChaosComb
ChaosComb 2021년 11월 9일
답변: ChaosComb 2021년 11월 9일
こんにちは.
subplotを用いて,例えば3行1列のグラフを作成する場合,以下の画像のようになったとします.
(縦長で見にくくなってしまってすみません.)
この時,subplot(3, 1, 1)とそれ以外でy軸のラベル位置がずれているのが確認できると思います.
これは,subplot(3, 1, 1)ではplotされる値が正の値のみであるのに対し,subplot(3, 1, 2)では負の値が含まれるため,”-”が描画され,その分だけラベル位置が左に移動しているからだと思います.
今回の画像の場合だと,どれも数値は3桁ですので,それほど変化はありませんが,桁数が異なる場合にはそれだけy軸のラベル位置もずれる事になります.
こう言った場合に,subplot内のラベル位置をプログラム的にそろえることは可能でしょうか?
(エディタで微調整することは可能だと思いますが,それは正直めんどくさいなぁと思っているところです.)

채택된 답변

Atsushi Ueno
Atsushi Ueno 2021년 11월 9일
> subplot内のラベル位置をプログラム的にそろえることは可能でしょうか?
可能です。ylabel関数のオプション引数では調整出来ません。ですが t = ylabel(___) の形で書くと、y 軸ラベルとして使用される text オブジェクトを返すので、このオブジェクトに含まれる位置(Position)を変更すれば、後からエディタで微調整するのと同じ事が出来ます。最も離れたyラベルの位置に合せるのが適当と思うので、下記の例では最小値を設定してみました。
x = linspace(0,10); y1 = abs(300*sin(x)); y2 = 100*sin(x); y3 = 200*cos(x);
subplot(3,1,1); plot(x,y1); t1 = ylabel('Position mm');
subplot(3,1,2); plot(x,y2); t2 = ylabel('Velocity mm/s');
subplot(3,1,3); plot(x,y3); t3 = ylabel('Acceleration mm/s^2');
% ここから:「エディタで微調整」と同じ事をする
temp = min([t1.Position(1),t2.Position(1),t3.Position(1)]);
t1.Position(1) = temp; % 最も離れたyラベルの位置に合せる
t2.Position(1) = temp; % 最も離れたyラベルの位置に合せる
t3.Position(1) = temp; % 最も離れたyラベルの位置に合せる

추가 답변 (1개)

ChaosComb
ChaosComb 2021년 11월 9일
回答ありがとうございます.
まさに求めていた方法でした.今後も何かあればよろしくお願いいたします!

카테고리

Help CenterFile Exchange에서 MATLAB에 대해 자세히 알아보기

제품


릴리스

R2020a

Community Treasure Hunt

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

Start Hunting!