使用';在数据框中创建多个绘图(每列一个绘图);对于';环进R

使用';在数据框中创建多个绘图(每列一个绘图);对于';环进R,r,dataframe,for-loop,plot,multiple-columns,R,Dataframe,For Loop,Plot,Multiple Columns,我想在一个数据帧中使用R中的“for”循环绘制多个直方图图(每列一个) 我已经做了我的在线搜索,我设法得到了这个代码。对于每一列,我想根据“组”制作多个直方图。当我在没有“for”循环和单个列的情况下进行操作时,这对我来说是有效的。但是,当我尝试对“一个pdf”中的所有列使用“for”循环all-at-one时,生成的pdf文件没有任何错误。但它不会产生任何情节。有谁能帮助我了解代码中可能缺少的内容吗?我只是想让它自动化,因为我有比这4个变量多得多的变量来绘制这样的图 library(purr

我想在一个数据帧中使用R中的“for”循环绘制多个直方图图(每列一个)

我已经做了我的在线搜索,我设法得到了这个代码。对于每一列,我想根据“组”制作多个直方图。当我在没有“for”循环和单个列的情况下进行操作时,这对我来说是有效的。但是,当我尝试对“一个pdf”中的所有列使用“for”循环all-at-one时,生成的pdf文件没有任何错误。但它不会产生任何情节。有谁能帮助我了解代码中可能缺少的内容吗?我只是想让它自动化,因为我有比这4个变量多得多的变量来绘制这样的图

library(purrr)
library(ggplot2)
library(doBy)
setwd("C:\\Path\\")

df <- read.table("Histograms_Example.txt", header=T)
pdf(file=paste0("one.pdf"))
par(mfrow = c(1, 1))

loop.vector <- names(df)[1:4]
for (i in loop.vector) {
x <- df[,i]
mu <- summaryBy(x ~ Groups, data = df, 
          FUN = list(median), na.rm = TRUE)
ggplot(df, aes(x=x, color=Groups, fill=Groups)) +
geom_histogram(aes(y=..density..), position="identity", alpha=0.5)+ 
geom_density(alpha=0.6)+
geom_vline(data=mu, aes(xintercept=x.median, color=Groups),
           linetype="dashed")+
scale_color_grey()+
scale_fill_grey() +
labs(title="Weight histogram plot",x=paste("",x), y = "Density")+
theme_classic()
}
dev.off()
库(purrr)
图书馆(GG2)
图书馆(多比)
setwd(“C:\\Path\\”)

df您需要在for循环中显式打印ggplot对象:

  • 将绘图指定给对象:
    p=ggplot(…)

  • 打印对象:
    Print(p)


  • 如果您可以使用
    dput(head(df))
    共享一些数据,这将非常有用。当然,我已经这样做了。这只是一个示例数据,如图所示。在这一点上,它们不是正态分布的,只是作为一个假人来帮助我完成pdf输出的工作。可能的重复解决了这个问题,也帮助我理解。非常感谢你。
    library(purrr)
    library(ggplot2)
    library(doBy)
    setwd("C:\\Path\\")
    
    df <- read.table("Histograms_Example.txt", header=T)
    pdf(file=paste0("one.pdf"))
    par(mfrow = c(1, 1))
    
    loop.vector <- names(df)[1:4]
    for (i in loop.vector) {
    x <- df[,i]
    mu <- summaryBy(x ~ Groups, data = df, 
              FUN = list(median), na.rm = TRUE)
    ggplot(df, aes(x=x, color=Groups, fill=Groups)) +
    geom_histogram(aes(y=..density..), position="identity", alpha=0.5)+ 
    geom_density(alpha=0.6)+
    geom_vline(data=mu, aes(xintercept=x.median, color=Groups),
               linetype="dashed")+
    scale_color_grey()+
    scale_fill_grey() +
    labs(title="Weight histogram plot",x=paste("",x), y = "Density")+
    theme_classic()
    }
    dev.off()