12

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軸に数値ではなく日付として表示するにはどうすればよいですか。

データに日付がありませんが、最初の日付はわかっています。

前もって感謝します

4

1 に答える 1

15

自分で軸にラベルを付けるか、"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

その結果、

ここに画像の説明を入力してください

重要なのは、デフォルトが気に入らない場合は、希望するラベル/目盛りの位置の日付のベクトルを作成するだけで、軸にラベルを付ける場所を完全に制御できるということです。

于 2013-03-22T16:52:02.113 に答える