代码之家  ›  专栏  ›  技术社区  ›  matteo

使用ggplot2的批处理图

  •  0
  • matteo  · 技术社区  · 12 年前

    我对ggplot2的“串行”绘图有问题。这是我的df:

        structure(list(ID = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
    1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 
    3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 
    4L, 4L, 4L, 4L, 4L, 4L), .Label = c("P1", "P21", "P24", "P25"
    ), class = "factor"), Date = structure(c(21L, 22L, 24L, 25L, 
    28L, 29L, 30L, 31L, 32L, 33L, 34L, 1L, 2L, 3L, 4L, 6L, 7L, 8L, 
    9L, 10L, 12L, 22L, 23L, 26L, 27L, 29L, 30L, 31L, 32L, 1L, 2L, 
    3L, 4L, 5L, 7L, 9L, 8L, 11L, 13L, 14L, 15L, 16L, 17L, 18L, 19L, 
    20L), .Label = c("1996-05-30", "1996-12-06", "1997-03-18", "1997-06-27", 
    "1997-09-29", "1997-09-30", "1997-11-24", "1998-03-13", "1998-05-07", 
    "1998-07-09", "1998-07-14", "1998-10-26", "1998-10-30", "1999-03-15", 
    "1999-06-16", "1999-09-06", "1999-11-10", "2000-03-15", "2000-06-21", 
    "2000-11-28", "2007-09-04", "2007-10-16", "2008-05-21", "2008-05-22", 
    "2008-08-06", "2008-08-12", "2008-10-16", "2008-10-17", "2009-07-01", 
    "2009-10-14", "2010-07-02", "2010-09-29", "2011-06-09", "2011-08-23"
    ), class = "factor"), T = c(11.1, 11.1, 10.9, 10.9, 10.6, 11, 
    10.5, 11.2, 10.9, 10.7, 11.1, 10.9, 10.2, 10.2, 10.9, 10.2, 9.9, 
    10, 10.3, 10.5, 10.1, 11.1, 11.1, 11.1, 10.9, 11.1, 10.7, 11.3, 
    11, 11.4, 10.2, 10.2, 10.7, 10.3, 9.9, 10.2, 10.1, 10.2, 10.2, 
    10.2, 10.6, 10.7, 10.2, 10.3, 11, 10.6), ph = c(6.76, 6.72, 6.9, 
    6.91, 6.96, 6.98, 6.94, 7.02, 7, 6.92, 6.94, 6.5, 6.4, 6.7, 6.52, 
    6.6, 6.6, 6.5, 6.55, 6.51, 6.59, 6.72, 6.76, 6.82, 6.8, 6.76, 
    6.76, 6.88, 6.82, 6.7, 6.7, 6.9, 6.71, 6.9, 6.8, 6.7, 6.69, 6.79, 
    6.69, 6.68, 6.5, 6.67, 6.65, 6.73, 6.78, 6.68), EC = c(1499L, 
    2120L, 881L, 902L, 870L, 541L, 891L, 876L, 860L, 868L, 877L, 
    3630L, 3400L, 2470L, 2330L, 1810L, 2190L, 2810L, 2200L, 2440L, 
    1111L, 2120L, 1654L, 1746L, 1781L, 761L, 1627L, 1733L, 1633L, 
    2440L, 3130L, 3180L, 2530L, 2710L, 2450L, 2630L, 3610L, 2190L, 
    973L, 3650L, 3060L, 3280L, 2930L, 879L, 3040L, 3030L), Month = structure(c(9L, 
    8L, 6L, 1L, 8L, 3L, 8L, 3L, 9L, 4L, 1L, 6L, 2L, 5L, 4L, 9L, 7L, 
    5L, 6L, 3L, 8L, 8L, 6L, 1L, 8L, 3L, 8L, 3L, 9L, 6L, 2L, 5L, 4L, 
    9L, 7L, 6L, 5L, 3L, 8L, 5L, 4L, 9L, 7L, 5L, 4L, 7L), .Label = c("August", 
    "December", "July", "June", "March", "May", "November", "October", 
    "September"), class = "factor"), Year = c(2007L, 2007L, 2008L, 
    2008L, 2008L, 2009L, 2009L, 2010L, 2010L, 2011L, 2011L, 1996L, 
    1996L, 1997L, 1997L, 1997L, 1997L, 1998L, 1998L, 1998L, 1998L, 
    2007L, 2008L, 2008L, 2008L, 2009L, 2009L, 2010L, 2010L, 1996L, 
    1996L, 1997L, 1997L, 1997L, 1997L, 1998L, 1998L, 1998L, 1998L, 
    1999L, 1999L, 1999L, 1999L, 2000L, 2000L, 2000L)), .Names = c("ID", 
    "Date", "T", "ph", "EC", "Month", "Year"), class = "data.frame", row.names = c(NA, 
    -46L))
    

    我想做的是一个函数,它绘制每个ID、EC值与月份的关系,并将它们分组为年。首先,我更改了排序因子中的Month列:

    df$Month<-factor(df$Month, levels=month.name, ordered=T)
    

    然后我试着用这个代码做到这一点:

    by (df,df$ID,function(i){
      ggplot(df) +
               geom_point(aes(i$Month, i$EC, group=i$Year))
             })
    

    但我收到一个错误。奇怪的是,相同的代码适用于lattice:

    by (df,df$ID,function(i){
      xyplot(i$EC~i$Month, data=df, group=i$Year, main=list(unique(i$ID)),
             xlab="Months", ylab="EC",type=c('p','l','g'),
             auto.key=list(columns=3,lines=TRUE))
    })
    

    我真的不知道我在ggplot上错过了什么。有什么建议吗?

    1 回复  |  直到 12 年前
        1
  •  1
  •   Didzis Elferts    12 年前

    你应该把 i 在…内 ggplot() 调用,因为现在这是子集数据帧的名称。而且你不需要使用 i$ 在…内 aes() .

    by(df,df$ID,function(i) {
      ggplot(i) +
              geom_point(aes(Month, EC, group=Year))
    })
    
    推荐文章