如何一次创建多个具有不同名称的图(循环中的 ggplot)

How to create several plots with different names at once (ggplot in a loop)

我有几个变量需要可视化,每个变量都在不同的图中。我有 20 多个变量,我想将每个图都存储为一个元素,这样我就可以只用对我有用的那些来创建最终的图形。这就是为什么我认为在循环中创建绘图是最好的选择。

我需要几种图,但对于这个例子,我将使用箱线图。我想坚持使用 ggplot,因为它可以让我以后轻松调整图表。

假设这是我的数据:

a<-(rnorm(100,35,1))           
b<-(rnorm(100,5,1))            
c<-(rnorm(100,40,1))
mydata<-data.frame(a,b,c)

我想要每个名为图 1、图 2 和图 3 的变量的直方图。

我正在尝试这个,但是我对循环的经验很少,我不知道我哪里错了。

variable_to_be_plotted<-c("a","b","c")
    for (i in 1:3) {
      paste("Figure",i)<-print(ggplot(data = mydata, aes( variable_to_be_plotted[i] )) +
                             geom_boxplot())
    }

您可以使用 lapply() 制作地块,命名地块列表,然后使用 list2env()

plots = lapply(mydata, function(x) ggplot(mydata, aes(x)) + geom_boxplot()) 
names(plots) <- paste("Figure", 1:3)
list2env(plots, .GlobalEnv)       

您可以将绘图保存在列表中。这是执行此操作的 for 循环。

library(ggplot2)

variable_to_be_plotted<-c("a","b","c")
list_plots <- vector('list', length(variable_to_be_plotted))

for (i in seq_along(list_plots)) {
  list_plots[[i]] <- ggplot(data = mydata, 
                        aes(.data[[variable_to_be_plotted[i]]])) + geom_boxplot()
}

可以通过 list_plots[[1]]list_plots[[2]] 等访问各个地块