1

私はRに次のコードを持っています:

z = read.zoo(filename, sep=',', header=T, index = 1:2, FUN=f)
plot(z[,1], col='red', lty=1, xaxt="n")

これは、x軸なしで、データの時系列の折れ線グラフを生成します。次に、ラベル付きのx軸を数時間で追加したいので、次のことを試してみます(動物園のFAQの例の変換)。

tt = time(z)
m = unique(hours(tt))
axis(side = 1, at = m, labels=substr(m, 1, 2))

しかし、軸は表示されません。私はここで何が間違っているのですか?私は可能な限り例に忠実に従っていますが、月の取得から時間の取得に変更しています。何か案は?

役立つ場合は、次の出力の最初の数行を次に示しますz

                    AOT_500 Water.cm.
(04/27/10 06:53:26) 0.134940  1.403318
(04/27/10 07:01:26) 0.147529  1.425749
(04/27/10 07:07:15) 0.161837  1.411711
(04/27/10 07:12:05) 0.155312  1.415916
(04/27/10 07:21:36) 0.161960  1.438144
(04/27/10 07:34:29) 0.175276  1.426818
(04/27/10 07:50:08) 0.169452  1.435454
(04/27/10 08:09:39) 0.181987  1.437278
(04/27/10 08:50:58) 0.159755  1.372659
(04/27/10 09:04:12) 0.168336  1.348832
(04/27/10 09:10:04) 0.201690  1.383709

更新:要求に応じて-の出力dput(head(z,10))

structure(c(0.13494, 0.147529, 0.161837, 0.155312, 0.16196, 0.175276, 
0.169452, 0.181987, 0.159755, 0.168336, 1.403318, 1.425749, 1.411711, 
1.415916, 1.438144, 1.426818, 1.435454, 1.437278, 1.372659, 1.348832
), .Dim = c(10L, 2L), .Dimnames = list(NULL, c("AOT_500", "Water.cm."
)), index = structure(c(14726.2871064815, 14726.292662037, 14726.2967013889, 
14726.3000578704, 14726.3066666667, 14726.3156134259, 14726.3264814815, 
14726.3400347222, 14726.3687268519, 14726.3779166667), format = structure(c("m/d/y", 
"h:m:s"), .Names = c("dates", "times")), origin = structure(c(1, 
1, 1970), .Names = c("month", "day", "year")), class = c("chron", 
"dates", "times")), class = "zoo")
4

2 に答える 2

3

現時点では、plot-methodにy値のみを指定しています。時間の計算がかなり面倒であることがわかり、代わりに軸なしのプロット方法を使用することにしました。時間から切り捨てられた時間を差し引くだけで、plot.zooはそれをうまく計算します。

require(xts); require(chron)
mm <- times(tt)
plot((mm-trunc(mm) ), z[,1], col='red', lty=1, type="b", xlab="Time of Day")

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

于 2011-11-08T18:35:48.100 に答える
2

中間データを見てください。 mは数値ですaxisが、文字列と同じように関数で使用します。文字列であっても、at=プロットするオブジェクトのインデックス(この場合はchron)と同じクラスである必要があるため、機能しません。

以下のコードは、あなたがやろうとしていたと思うことを実行します。

# find the hourly sections of the chron index
m <- trunc((tt-trunc(tt))*24)/(24)
# find the minimum index value for each hour
l <- tapply(tt, m, min)
# plot the series
plot(z[,1], col='red', lty=1, xaxt="n", xlab="")
# add the axis
axis(side=1, at=l, labels=unique(m), las=2)
于 2011-11-08T18:25:56.903 に答える