使用FOR循环创建唯一的pdf

时间:2016-05-04 15:03:54

标签: r pdf for-loop ggplot2 data-visualization

假设我在这种情况下:

nba <- read.csv("http://datasets.flowingdata.com/ppg2008.csv", sep=",")
nba <- nba[order(nba$PTS),]
row.names(nba) <- nba$Name

nba_matrix <- data.matrix(nba)

library(ggplot2)
library(reshape)
nba.m <- melt(nba)
library(plyr)
library(scales)
nba.m <- ddply(nba.m, .(variable), transform, rescale=rescale(value))
(p <- ggplot(nba.m, aes(variable, Name)) + geom_tile(aes(fill = rescale), colour = "white") + 
      scale_fill_gradient(low = "white", high = "steelblue"))

现在我想创建一系列包含在同一pdf文档中的图像(不是n pdf文档):

listaNbA <- list(nba.m,nba.m)
pdf("bennagoal.pdf")

  (p <- ggplot(listaNbA[[1]], aes(variable, Name)) + geom_tile(aes(fill = rescale), colour = "white") +
     scale_fill_gradient(low = "white", high = "purple")+
     theme(axis.text.x = element_text(angle = 45, hjust = 1))+
     geom_text(aes(label=value))
  )

  (p <- ggplot(listaNbA[[2]], aes(variable, Name)) + geom_tile(aes(fill = rescale), colour = "white") +
  scale_fill_gradient(low = "white", high = "purple")+
  theme(axis.text.x = element_text(angle = 45, hjust = 1))+
  geom_text(aes(label=value))
  )

dev.off()

它可以生成包含两个页面的pdf文件。 现在我想做同样的事情,但是使用for循环:

listaNbA <- list(nba.m,nba.m)
pdf("jamesotto.pdf")
for(i in 1:2){

(p <- ggplot(listaNbA[[i]], aes(variable, Name)) + geom_tile(aes(fill = rescale), colour = "white") +
  scale_fill_gradient(low = "white", high = "purple")+
  theme(axis.text.x = element_text(angle = 45, hjust = 1))+
  geom_text(aes(label=value))
)

}
dev.off()

第二个代码生成一个空的pdf文件。为什么呢?

0 个答案:

没有答案