subplotでy軸のラベル位置を合わせる方法
22 views (last 30 days)
Show older comments
こんにちは.
subplotを用いて,例えば3行1列のグラフを作成する場合,以下の画像のようになったとします.
(縦長で見にくくなってしまってすみません.)

この時,subplot(3, 1, 1)とそれ以外でy軸のラベル位置がずれているのが確認できると思います.
これは,subplot(3, 1, 1)ではplotされる値が正の値のみであるのに対し,subplot(3, 1, 2)では負の値が含まれるため,”-”が描画され,その分だけラベル位置が左に移動しているからだと思います.
今回の画像の場合だと,どれも数値は3桁ですので,それほど変化はありませんが,桁数が異なる場合にはそれだけy軸のラベル位置もずれる事になります.
こう言った場合に,subplot内のラベル位置をプログラム的にそろえることは可能でしょうか?
(エディタで微調整することは可能だと思いますが,それは正直めんどくさいなぁと思っているところです.)
0 Comments
Accepted Answer
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ラベルの位置に合せる
0 Comments
More Answers (1)
See Also
Categories
Find more on Axis Labels in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!