xラボを数字ではなく日付として提示したいと思います。たとえば、次のようにプロットします。
f=c(2,1,5,4,8,9,5,2,1,4,7)
plot(f)
値の数に応じて、x軸の数値の範囲を取得します。たとえば、最初の値を2012年4月1日、2番目の値を2012年5月1日などに設定し、x軸に数値ではなく日付として表示するにはどうすればよいですか。
データに日付がありませんが、最初の日付はわかっています。
前もって感謝します
自分で軸にラベルを付けるか、"Date"
クラスを使用して観測の日付のベクトルを作成することにより、Rにラベルを付けることができます。次に例を示します。
f <- c(2,1,5,4,8,9,5,2,1,4,7)
dates <- seq(as.Date("04/01/2012", format = "%d/%m/%Y"),
by = "days", length = length(f))
plot(dates, f)
dates
最終的には:
> dates
[1] "2012-01-04" "2012-01-05" "2012-01-06" "2012-01-07" "2012-01-08"
[6] "2012-01-09" "2012-01-10" "2012-01-11" "2012-01-12" "2012-01-13"
[11] "2012-01-14"
プロットは次のようになります。
より詳細な制御とラベルを正確に保持する必要がある場合は、x軸の描画を抑制してからaxis.Date
、たとえばを使用して手動で追加する必要があります。
plot(dates, f, xaxt = "n")
axis.Date(side = 1, dates, format = "%d/%m/%Y")
を生成します
たとえば、を使用して、そこで軸ラベルを回転させることもできますlas = 2
。
詳細について?axis.Date
は、、?strftime
を?as.Date
参照してください。
axis.Date
at
ティック配置のデフォルトのヒューリスティックをオーバーライドするには、引数を使用してティックの場所を指定します。たとえば、700日の長い日付シーケンスでは、毎月の初めにラベルを配置する場合があります。
set.seed(53)
f <- rnorm(700, 2)
dates <- seq(as.Date("04/01/2012", format = "%d/%m/%Y"),
by = "days", length = length(f))
head(f)
プロットは少し複雑ですが、それほど多くはありません
op <- par(mar = c(7,4,4,2) + 0.1) ## more space for the labels
plot(dates, f, xaxt = "n", ann = FALSE)
labDates <- seq(as.Date("01/01/2012", format = "%d/%m/%Y"), tail(dates, 1),
by = "months")
axis.Date(side = 1, dates, at = labDates, format = "%b %y", las = 2)
title(ylab = "f") ## draw the axis labels
title(xlab = "dates", line = 5) ## push this one down a bit in larger margin
par(op) ## reset margin
これにより、次のようになります。
このテーマは変更できます。たとえば、隔月のラベル、他の月のマイナーティックなどです。
op <- par(mar = c(7,4,4,2) + 0.1) ## more space for the labels
plot(dates, f, xaxt = "n", ann = FALSE)
labDates <- seq(as.Date("01/01/2012", format = "%d/%m/%Y"), tail(dates, 1),
by = "2 months")
## new dates for minor ticks
minor <- seq(as.Date("01/02/2012", format = "%d/%m/%Y"), tail(dates, 1),
by = "2 months")
axis.Date(side = 1, dates, at = labDates, format = "%b %y", las = 2)
## add minor ticks with no labels, shorter tick length
axis.Date(side = 1, dates, at = minor, labels = FALSE, tcl = -0.25)
title(ylab = "f") ## draw the axis labels
title(xlab = "dates", line = 5) ## push this one down a bit in larger margin
par(op) ## reset margin
その結果、
重要なのは、デフォルトが気に入らない場合は、希望するラベル/目盛りの位置の日付のベクトルを作成するだけで、軸にラベルを付ける場所を完全に制御できるということです。