subplotでy軸のラベル位置を合わせる方法
22 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
ChaosComb
am 9 Nov. 2021
Beantwortet: ChaosComb
am 9 Nov. 2021
こんにちは.
subplotを用いて,例えば3行1列のグラフを作成する場合,以下の画像のようになったとします.
(縦長で見にくくなってしまってすみません.)

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