如何绘制多个时间序列

时间:2014-04-05 03:40:09

标签: r time-series

我有这样的数据

 Date,     VID, C1,  C2, C3
 2/1/2014, V01, ON,  OFF, OFF 
 2/2/2014, V01, ON,  OFF, OFF 
 2/3/2014, V01, ON,  OFF, OFF 
 2/4/2014, V01, ON,  OFF, OFF 
 2/1/2014, V02, OFF, ON,  OFF 
 2/3/2014, V02, OFF, OFF, ON 
 2/4/2014, V02, ON,  ON,  OFF 
 2/5/2014, V02, ON,  OFF, ON 

有许多VID&C1和C1,C2,C3是分类。 这是我如何绘制这个&这是非常耗时的,所以想知道我是否可以绘制一个VID的所有时间序列ib一个图表以及如何对所有VID进行绘制?

library(sqldf)
library(zoo)

#I execute this code for each variable and get separate plot
#I would like to plot all C1,C2,C3 for each vehicle in single plot
#and plot for each vehicle 
vehicle_V01 = sqldf("select * from df where Vehicle='V01'")
vehicle_V01$C1_numeric = as.numeric(vehicle_V01$C1)
vehicle_V01$C2_numeric = as.numeric(vehicle_V01$C2)
vehicle_V01$C3_numeric = as.numeric(vehicle_V01$C3)
ts = zoo(vehicle_V01$C1_numeric ,vehicle_V01$Date)
plot(ts)

这是非常耗时的,不知道如何有效地做到这一点?

1 个答案:

答案 0 :(得分:0)

我会使用ggplot2reshape2来绘制和重塑数据。

library(reshape2)
library(ggplot2)
df=melt(df,id.vars=c('Date','VID'))
df$value=as.numeric(vehicle$value)#ON = 2, OFF = 1

ggplot(df,aes(x=Date,y=value))+geom_line()+facet_grid('variable+VID~.')

日期值在最后3行更改为少一个,但输出图形看起来与您在下面看到的一样。这是你正在寻找的吗? (另外,我没有使用您使用的日期值,但您可以在运行代码时使用它们,或只是更改轴标签)。

enter image description here