22

ggplot2パッケージに時系列のプロットがあり、移動平均を実行しました。移動平均の結果を時系列のプロットに追加したいと思います。

データセットのサンプル(p31):

ambtemp dt -1.14 2007-09-29
00:01:57
-1.12 2007-09-29 00:03:57
-1.33 2007-09-29 00:05:57 -1.44
2007-09-29 00:07:57
-1.54 2007-09-29 00:09:57
-1.29 2007-09-29 00:11:57

時系列表示に適用されるコード:

  Require(ggplot2)
  library(scales)
  p29$dt=strptime(p31$dt, "%Y-%m-%d %H:%M:%S")
  ggplot(p29, aes(dt, ambtemp)) + geom_line() +
     scale_x_datetime(breaks = date_breaks("2 hour"),labels=date_format("%H:%M")) + xlab("Time 00.00 ~ 24:00 (2007-09-29)") + ylab("Tempreture")+
     opts(title = ("Node 29"))

時系列プレゼンテーションのサンプル 時系列プレゼンテーションのサンプル

移動平均プロット ここに画像の説明を入力してください のサンプル期待される結果のサンプル

課題は、時系列データov =がタイムスタンプと温度を含むデータセットから取得されることですが、移動平均データにはタイムスタンプではなく平均列​​のみが含まれ、これら2つを適合させると不整合が生じる可能性があります。

推測される結果

4

1 に答える 1

35

rollmean()1つの解決策は、ライブラリの関数を使用zooして移動平均を計算することです。

質問(p31とp29)のデータフレーム名と混同しているので、p29を使用します。

p29$dt=strptime(p29$dt, "%Y-%m-%d %H:%M:%S")

library(zoo)
#Make zoo object of data
temp.zoo<-zoo(p29$ambtemp,p29$dt)

#Calculate moving average with window 3 and make first and last value as NA (to ensure identical length of vectors)
m.av<-rollmean(temp.zoo, 3,fill = list(NA, NULL, NA))

#Add calculated moving averages to existing data frame
p29$amb.av=coredata(m.av)

#Add additional line for moving average in red
ggplot(p29, aes(dt, ambtemp)) + geom_line() + 
  geom_line(aes(dt,amb.av),color="red") + 
  scale_x_datetime(breaks = date_breaks("5 min"),labels=date_format("%H:%M")) +
  xlab("Time 00.00 ~ 24:00 (2007-09-29)") + ylab("Tempreture")+
  ggtitle("Node 29")

線の色を凡例に表示する必要がある場合は、aes()ggplot()変更geom_line()するscale_colour_manual()必要があり、追加する必要があります。

  ggplot(p29, aes(dt)) + geom_line(aes(y=ambtemp,colour="real")) +
   geom_line(aes(y=amb.av,colour="moving"))+
   scale_x_datetime(breaks = date_breaks("5 min"),labels=date_format("%H:%M")) + 
   xlab("Time 00.00 ~ 24:00 (2007-09-29)") + ylab("Tempreture")+
   scale_colour_manual("Lines", values=c("real"="black", "moving"="red")) +    
   ggtitle("Node 29")
于 2012-12-12T14:25:35.467 に答える