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

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

Accepted Answer

Atsushi Ueno
Atsushi Ueno on 9 Nov 2021
> 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ラベルの位置に合せる

More Answers (1)

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

Categories

Find more on MATLAB in Help Center and File Exchange

Products


Release

R2020a

Community Treasure Hunt

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

Start Hunting!