2011-04-20 250 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