MATLABでtimedateデータをプロットすると、横軸は「よろしく」やってくれます。
これを少し手を変えたい時は多々ありますね。
東京のPCR陽性者数と人出の関係では横軸のtickを毎月に変更しています。 もともと4ヶ月ごとになっていました。
その場合は次のようなコードを使っています:
plot(positive_date, movmean(positive_daily,7))
ylabel("PCR 陽性者数")
xl = xlim;
xt = xl(1) + calmonths(0:1:(2021-2020)*12+3);
xticks(xt)
ax_h1 = gca;
ax_h1.XAxis.TickLabelRotation = 45;
元ネタはhow to set a frequency of x axis of a plot?です。
xlimはx軸の範囲の上限・下限を取得しています。
>> xl xl = 1×2 の datetime 配列 2020-01-01 2021-04-01
となっています。xl(1)が下限、xl(2)が上限です。
ここでのキモは
xt = xl(1) + calmonths(0:1:(2021-2020)*12+3);
です。 calmonths を使ってカレンダー月数を表す配列を計算しています:
>> calmonths(0:1:(2021-2020)*12+3)
ans =
1×16 の calendarDuration 配列
1 列から 15 列
0mo 1mo 2mo 3mo 4mo 5mo 6mo 7mo 8mo 9mo 10mo 11mo 1y 1y 1mo 1y 2mo
列 16
1y 3mo
「ヶ月」ということですね。0月から1年3ヶ月分の毎月の配列です。
これをxl(1)と足し算すると次のようになります:
>> xt xt = 1×16 の datetime 配列 1 列から 10 列 2020-01-01 2020-02-01 2020-03-01 2020-04-01 2020-05-01 2020-06-01 2020-07-01 2020-08-01 2020-09-01 2020-10-01 11 列から 16 列 2020-11-01 2020-12-01 2021-01-01 2021-02-01 2021-03-01 2021-04-01
これをxticksで指定すると各月がticksになります。













