目盛を日付・時刻で表示 & ラベルの改行 †はじめに †datetime型をplot等の軸に採用すると,自動で軸目盛りのラベルが日付表示になる. % サンプル日時の行列を作成 % 1990/06/01 12:00 〜 1992/06/01 12:00 % 毎月1日の12:00の25要素 Y = [repmat(1990,[1 7]) repmat(1991,[1 12]) repmat(1992,[1 6])]; M = [6:12 1:12 1:6]; D = ones(1,25); h = 12*ones(1,25); m = zeros(1,25); s = zeros(1,25); date_vec = vertcat(Y,M,D,h,m,s)'; % 25個の日時をdatetime型, シリアル値に変換 t = datetime(date_vec); tn = datenum(date_vec); % plot用に適当なデータを作成 A = peaks(25); y = A(:,10); datetick †シリアル値でplotすると,最初はシリアル値のまま. % plot
figure
plot(tn,y,'bo-')
grid on
% 目盛位置の設定
tick = datenum(date_vec(1:6:end,:));
set(gca,'XTick',tick)
% datetickでフォーマット指定
datetick('x','mm/dd HH:MM','keeplimits','keepticks')
keeplimitsとkeepticksで実行する前の軸範囲と目盛り位置を固定する. datetickを使わずに目盛ラベルを表示し,改行する †目盛り間隔やラベルのフォーマットによっては目盛ラベルが前後の文字と重なることもある. % 目盛位置の設定
tick = datenum(date_vec(1:6:end,:));
% 目盛ラベルの設定,LaTeX書式
tlabel = cell(1,length(tick));
for k = 1:length(tick)
tlabel{k} = ['\begin{tabular}{c}',datestr(tick(k),'yyyy/mm/dd HH:MM'),'\end{tabular}'];
tlabel{k} = strrep(tlabel{k},' ','\\');
end
% 反映させる
set(gca,'XTick',tick,'XTickLabels',tlabel,'TickLabelInterpreter','latex')
参考 † |