ggplot,在不同行的多个页面中绘图

时间:2015-11-06 10:19:54

标签: r loops pdf ggplot2 facet-wrap

我想使用facet_wrap制作图表,并将其绘制在pdf文件的不同页面中。我读过儿子很多选择,这有效: R + ggplot: plotting over multiple pages  但只有当每页中有相同的行时才会显示。

我有这个演示数据来尝试解释我的情况:

A <- data.frame(TIME = rep(c(0, 5, 10, 15, 30, 45, 60), 5))
A$C <- (1 - exp(-0.2*A$TIME))
A$ID <- rep(1:5, each = 7)
A$R <- rnorm(35, mean = 1, sd = 0.01)
A$C2 <- A$C*A$R
Pages <- 5
A2 <- A[c(1,4:8,10:22,24:35),]

所以,我有不同观察数的ID。我尝试用每个ID中的观察次数制作一个向量(我想要每页一个ID),但它不起作用。

nrws <- ddply(A2, .(ID), "nrow")
nsamp <- nrws[,2]

pdf("Test.pdf")
for (i in seq(Pages))
  {
    slice = seq(((i-1)*nsamp[i]),(i*nsamp[i]))
    slice2 = slice[!(slice > nrow(A2))]
    A3 = A2[slice2,]
    p1 <- ggplot(A3, aes(x = TIME, y = C2)) +  
      geom_line(size = 0.5) +
      geom_point(size = 1) +
      facet_wrap(~ID)
print(p1)
  }
dev.off()

你能帮帮我吗?

谢谢你的进步, 纳乔

1 个答案:

答案 0 :(得分:1)

我认为你是在试图计算你的&#34;切片&#34;。也许你想要这个?

不完全确定。如果您只需要每页一个ID,则不需要facet_wrap,并且您可能需要明确设置比例以使页面与页面保持一致。

library(plyr)

A <- data.frame(TIME = rep(c(0, 5, 10, 15, 30, 45, 60), 5))
A$C <- (1 - exp(-0.2*A$TIME))
A$ID <- rep(1:5, each = 7)
A$R <- rnorm(35, mean = 1, sd = 0.01)
A$C2 <- A$C*A$R
Pages <- 5
A2 <- A[c(1,4:8,10:22,24:35),]

nrws <- ddply(A2, .(ID), "nrow")
nsamp <- nrws[,2]

pdf("Test.pdf")
for (i in seq(Pages))
{
#  slice = seq(((i-1)*nsamp[i]),(i*nsamp[i]))
#  slice2 = slice[!(slice > nrow(A2))]
#  A3 = A2[slice2,]

  A3 = A2[A2$ID==i,]
  p1 <- ggplot(A3, aes(x = TIME, y = C2)) +  
    geom_line(size = 0.5) +
    geom_point(size = 1) +
    facet_wrap(~ID)
  print(p1)
}
dev.off()