创建带有不同标题和文件名的100个ggplots(行)以保存到文件夹的功能

时间:2019-02-07 10:32:34

标签: r ggplot2

我有R代码使用ggplot2软件包和函数ggplot创建100个单独的线图(每个图2条线,以及100个患者的100个此类图)。我不确定如何使代码原子化,以便使用文件名=患者编号创建每个图,每个图上的标题=患者编号,然后将这100个图直接保存到文件夹中。

我尝试使用函数创建一个循环来制作图形,然后使用ggsave保存它们。但是在调用我的函数时,似乎什么都没有发生。不知道如何解决。我只有10位患者尝试过。

我的数据:是100位患者对22个问题(通过问卷调查)的回答。有100列-每位患者一列,共44行。前22行用于患者给出的实际反应(Grp = A),后22行用于正确应该做出的反应(Grp = B)。

#Column names = patient no.
Patno <- c("P_1", "P_2", "P_3", "P_4", "P_5" ,"P_6" ,"P_7", "P_8", "P_9", "P_10")

#The text to be printed on each plot
Plno <- c("0001", "0002", "0003", "0004", "0005", "0006", "0007", "0008", "0009", "00010") 

# create graphing function
pdf.graph <- function(df){
  for (i in Patno){
    p <- ggplot(data=df, aes_string(x="QN", y="Patno[i]", group="Grp")) +
      geom_line(aes_string(color="Grp", linetype="Grp", size="Grp")) +
      geom_point(aes_string(color="Grp"))

   p1 <- p + 
      scale_linetype_manual(values = c("solid", "dotted")) +
      scale_color_manual(values = c('#E69F00','#999999')) +
      scale_size_manual(values = c(1.25, 1)) +
      theme_bw() +
      theme(panel.border = element_blank(),
            panel.grid.minor = element_blank(), 
            axis.line = element_line(colour = "black"), 
            legend.position="none") +
      scale_x_continuous(name = " ", limits = c(1, 22), 
                         breaks=seq(1,22), expand = c(0, 0) ) +
      scale_y_discrete(name=" ",
                       labels = c("TRUE" = "T", "FALSE" = "F", "Don't Know" = "DK")) +
      annotate(geom = 'text', label = " Plno[i]", 
               x = -Inf, y = Inf, hjust = 0, vjust = 1) 

   # save plots as .pdf
   ggsave(plot, 
          file = paste(resullts, 'projection_graphs/county_graphs/', 
                       Plno[i], ".pdf", sep=''), 
          scale = 2)
   print(p1)
   dev.off()
  }
}

pdf.graph(df)

当我使用数据集df调用该函数时,没有错误,但是没有产生o ​​/ p。关于如何解决这个问题,我将非常感谢您的答复。对我来说真的很重要。我尝试了多种方法。

0 个答案:

没有答案