目盛りのフォーマットを揃える

plotboxの軸目盛り

例えば

figure;
plot(peaks./100);

と実行すると,下図のようにy軸目盛り数値の桁数がバラバラ.

OrgYTick.png

整数なら整数,小数点なら第○位までと全てを統一したい.
上図のY軸を少数第2位までにそろえるとすれば,下記の通りになる.

fmt = '%0.2f'; % 表示させたいフォーマット
yt = -0.08:0.02:0.10; % 目盛り表示位置と間隔 

ax = gca; % カレントのaxes取得
ax.YTick = yt; % 目盛り表示位置の指定 (数値)
ax.YTickLabel = num2str(ax.YTick',fmt); % 目盛りラベルの指定 (文字列)

YTick の指定は必須ではないが,図の余白や大きさ自体が変化したときに目盛り間隔が自動で変わってしまい YTickLabel と整合しなくなるので,
同時に指定したほうが無難.
自分で指定せず,自動で設定された YTick そのままで良い時も

ax.YTick = ax.YTick; % 目盛り表示位置の指定 (数値)
ax.YTickLabel = num2str(ax.YTick',fmt); % 目盛りラベルの指定 (文字列)

としておく(これ以後目盛りの自動調節はなくなる).
出力結果は下図の通り.

ArrangedYTick.png

他の軸の場合も ax.XTick とかにするだけ.
表示する目盛り位置(数値)を指定してしまっているので,事前にサイズや軸範囲,フォントなど一通りの体裁を修正し,最後にこの操作を行わないと不細工に.
また,目盛りラベル同士で文字数が異なるとき('1'と'100000'とか)は,char 配列だと短い文字列に無駄な余白ができるので,セル配列にした方が良い.

colorbarの目盛り

colorbarの目盛りについてもほぼ同じ.

figure;
pcolor(peaks./100);
caxis([-0.10 0.10])

を実行すると以下の通り.colobar の目盛りラベルのフォーマットを統一したい.

Orgcbticks.png

上記と似たような処理で調整可能だが,colorbarの場合は
「Ytick」,「YTickLabel」でなく,
「Ticks」,「TickLabels」を使う.なかなか紛らわしい.
以下に目盛りの桁数を調整する例を示す.ついでに表示する目盛り位置も指定している.

% フォーマット設定
fmt = '%0.2f';
cbtick = -0.10:0.05:0.10;

% 取得・変更
cb = colorbar;
cb.Ticks = cbtick;
cb.TickLabels = num2str(cb.Ticks',fmt);

これを実行すれば,目盛り数値の桁も揃い,目盛り間隔も調整できる.

ArrangedCBTicks.png

Front page   Edit Diff Attach Copy Rename Reload   New List of pages Search Recent changes   Help   RSS of recent changes
Last-modified: 2019-08-22 (Thu) 03:33:21 (29d)