如何使用 ggplot 在 R 中自动绘制图形并将它们保存到文件夹中?

Posted

技术标签:

【中文标题】如何使用 ggplot 在 R 中自动绘制图形并将它们保存到文件夹中?【英文标题】:How can I automatically plot graphs in R with ggplot and save them to a folder? 【发布时间】:2017-08-08 03:00:51 【问题描述】:

我正在尝试为数据集的每一列创建一个图表(使用 quickplot),并将其以 pdf 格式保存到一个文件夹中 - 任何建议都将不胜感激!

到目前为止,我已经制作了一个测试数据框(在我尝试使用 500 多列之前)

test.data <-cbind.data.frame(data$col_1,data$col_2,data$col_3)

然后我尝试编写一个函数来绘制和保存图形。我正在尝试制作图表条形图(带有一些标题和颜色规范),以显示编号的数量。每个类别的人。因此,这些列通常由分类数据组成。

plot.graphs <- function(x)       
  for(i in colSums(x))
    plots <- quickplot(i) +
      geom_bar(color= "#6267c1", fill="#6267c1") +
      labs(title= "i",
           x="i",
           y="Count") +
      theme(help()
        plot.title = element_text(colour = "#453694"),
        axis.title = element_text(colour ="#453694"))
    ggsave(plots,filename = "testplot",nm[1],".pdf",sep="")
    print(plots)
  

plot.graphs(test.data)

但是,这似乎会出现很多错误,所以我认为我做得不对。

【问题讨论】:

for(i in colSums() colSums 是一个函数,for 的右括号在哪里? i 在函数内部使用在哪里?另一个问题可能是您的输入数据是matrix(使用cbind)而不是data.frame,即test.data &lt;- data[c("col_1", "col_2", "col_3")] 非常感谢,我会尝试这些更改! 【参考方案1】:

尝试使用pdf() 图形设备和dev.off() 包装您的绘图代码。 pdf() 将打开一个 pdf 图形设备,并将您生成的所有图形存储在一个文件中,直到您使用 dev.off() 关闭图形设备。

我无法测试您的代码,因为我没有数据集,但试试这个:

pdf(file = 'test.pdf', onefile = TRUE, paper = 'special', height = 11, width = 8.5)

for(i in colSums(x))
    plots <- quickplot(i) +
      geom_bar(color= "#6267c1", fill="#6267c1") +
      labs(title= "i",
           x="i",
           y="Count") +
      theme(help()
        plot.title = element_text(colour = "#453694"),
        axis.title = element_text(colour ="#453694"))


dev.off()

另见:https://stat.ethz.ch/R-manual/R-devel/library/grDevices/html/pdf.html

【讨论】:

非常感谢!我会试试看的:)【参考方案2】:

以防万一这对任何人都有帮助,以下脚本最终对我有用:

plot.auto <- function(data, list = as.list(colnames(data)))
      df <- data
      ln <- length(names(data))
      for(i in 1:ln)

      plot <- quickplot(na.omit(df[,i],main=names(df)[i])) +
          geom_bar() +
          labs(title= colnames((df[,i])),
               x=colnames((df)[i]),
               y="y axis title") +
# this makes the titles and text particular colours 
          theme(
            plot.title = element_text(colour = "#455876"),
            axis.title = element_text(colour ="#455467"),
# this puts the labels on an angle so they don't overlap
            axis.text.x = element_text(angle = 30, hjust = 1))+
# this makes the title of the plot the same as the column name
          ggtitle(colnames((df)[i])) +
          geom_text(stat='count',aes(label=..count..),vjust=-0.3)

        print(length(unique(df[,i])))
# this deletes any characters in the column names which will make saving 
difficult        
        save_name1<- gsub("/","or",as.character(colnames(df)[i]))
        save_name<- gsub("\\?","",save_name1)

#this tells you each title of the graph as the function runs       
        print(save_name)

#this saves each graph in a folder which must be in your Working Directory 
eg. Auto_Plot_Folder (as a pdf) with the file the same as the column name

        ggsave(plot,filename = 
paste("Auto_Plot_folder/",save_name,".pdf",sep =""),device ="pdf")

      
    

【讨论】:

以上是关于如何使用 ggplot 在 R 中自动绘制图形并将它们保存到文件夹中?的主要内容,如果未能解决你的问题,请参考以下文章

R语言自选数据完成图形绘制,要求: 1.图形中至少包含两条曲线; 2.图形设计中包?

数据可视化 | 使用R语言绘制专业图表(Ⅰ)——ggplot2 图形语法基础

如何使用 R 中的 ggplot 绘制具有相同颜色的填充点和置信椭圆?

在R中用ggplot和par绘制两个图

1.ggplot2——简介

R语言ggplot2 简介