2011-04-20 117 views
1

我有以下数据,我想创建一个以group1group2变量为条件的折线图。按组别划分的线路图

dat <- structure(list(group1 = structure(c(1L, 1L, 1L, 1L, 2L, 2L, 2L), 
             .Label = c("a", "b"), 
             class = "factor"), 
         group2 = c(1L, 2L, 3L, 4L, 1L, 2L, 3L), 
         val1 = c(10L, 3L, 2L, 7L, 10L, 3L, 2L), 
         val2 = c(8L, 4L, 8L, 5L, 8L, 4L, 8L), 
         val3 = c(7L, 5L, 6L, 9L, 7L, 5L, 6L)), 
       .Names = c("group1", "group2", "val1", "val2", "val3"), 
       class = "data.frame", row.names = c(NA, -7L)) 

理想情况下,我想基础上(对于水平ab二)和各group 1变量中group1,我需要根据行变量(基本上是val1连接三个点,val2线图有两个图,和val3)以不同的颜色为不同的group2变量。

回答

2

你的意思是这样的:

dat2 <- with(dat, data.frame(group1 = rep(group1, each = 3), 
          group2 = factor(rep(group2, each = 3)), 
          values = stack(dat[,3:5])[,1])) 

上面的代码中的数据重构与ggplot更容易使用的格式。 dat用的是dput()代码,我添加到您的问:我觉得剧情你想,可以通过生产

p <- ggplot(dat2, aes(x = 1:3, y = values, colour = group2)) + geom_line() + 
     geom_point() + facet_wrap(~ group1, ncol = 2) 
p 

这给

ggplot line plot example

我基本上不得不作出了一些规定x数据,否则您如何知道点应位于x和y坐标空间的哪个位置?

+0

谢谢你的解决方案。我明白缺乏x数据的缺乏直觉,但它是一个日期变量,我不想陷入在R中处理日期变量的麻烦。 – user227290 2011-04-22 03:11:50