如何绘制id和时间

时间:2013-05-10 12:56:49

标签: r ggplot2

我有一个csv文件,我在df

中加载数据
time     d          e         f      id
 1 -0.3813535 -0.3766915 1.2365178    a
 2 -0.5192448 -0.8325136 0.7229763    a
 3  0.3292604 -0.3832252 1.2250516    b
 4  0.5438868 -1.1085977 1.3113659    b
 5 -0.6883436 -1.9918862 0.5804269    a
 6  0.7651908 -0.6465595 1.1116675    b
 7  0.8359222 -0.1933391 2.3156759    a
 8  1.5074557 -0.1650911 2.3737362    b
 9  0.7095554  2.2623272 3.0409351    a
10  0.7137618  2.7033626 2.5880434    b

实际上我想为id a和b拍摄2个图。

到目前为止,我所拥有的是时间计划

 library(ggplot2)
 library(reshape)
   df <- melt(df ,  id = 'time')

   ggplot(df, aes(time,value)) + geom_line() + facet_grid(series ~ .)

更新数据格式:

 time     d             id
 1 -0.3813535     a
 2 -0.5192448     a
 3  0.3292604     b
 4  0.5438868     b
 5 -0.6883436     a
 6  0.7651908     b
 7  0.8359222     a
 8  1.5074557     b
 9  0.7095554     a
10  0.7137618     b

1 个答案:

答案 0 :(得分:4)

从你的问题来看,不清楚情节应该如何看,但至少有两种可能的方式。

乞讨融化您的数据(使用库reshape2)并使用timeid列作为id.vars=

library(reshape2)
df.long <- melt(df ,  id.vars = c("time","id"))
head(df.long)
  time id variable      value
1    1  a        d -0.3813535
2    2  a        d -0.5192448
3    3  b        d  0.3292604
4    4  b        d  0.5438868
5    5  a        d -0.6883436
6    6  b        d  0.7651908

第一个变体 - 使用variable获取不同颜色的线条,然后使用id进行制作。

ggplot(df.long,aes(time,value,color=variable))+geom_line()+
         facet_grid(id~.)

enter image description here

第二个变体 - 如果所有行都应位于不同的方面,则在构面中同时使用variableid

ggplot(df.long,aes(time,value))+geom_line()+
      facet_grid(variable~id)

enter image description here

更新 - 使用新数据的解决方案

如果数据已经是长格式(无需融化数据),那么只需使用facet_grid(id~.)group=id将行放在不同的方面。

ggplot(df,aes(time,d,group=id))+geom_line()+facet_grid(id~.) 

enter image description here