多个直方图,标题和平均值为一行?

时间:2018-02-12 15:41:11

标签: r histogram sapply

在我的探索性分析中,我正在使用直方图功能。我想通过直方图函数在我的数据集中运行几个变量,并为每个变量添加标题和算术平均值的一行。这是我有多远(但主要标题仍然缺失):

histo.abline <-function(x){

  hist(x)

  abline(v = mean(x, na.rm = TRUE), col = "blue", lwd = 4)}

sapply(dataset[c(7:10)], histo.abline)

我试图在直方图函数中添加一个主参数,但它没有选择我的数据集向量的正确变量名。当我在其中放置main=x时,它会为每个变量返回NULL。姓氏和其他功能也不起作用。你能帮帮我吗?

1 个答案:

答案 0 :(得分:1)

您可以尝试使用ggplot:

library(ggplot)
histo.abline <-function(dataset,colnum){
  p<-ggplot(dataset,aes(dataset[,colnum]))+geom_histogram(bins=5,fill=I("blue"),col=I("red"), alpha=I(.2))+
    geom_vline(xintercept = mean(dataset[,colnum], na.rm = TRUE))+xlab(as.character(names(dataset)[colnum]))
  return(p)
}

由于您没有提供数据,因此可以使用mtcars并创建直方图列表

dataset=mtcars
listOfHistograms<-lapply(3:7,function(x) histo.abline(dataset,x))

您的列表有5个直方图,您可以通过以下方式绘制第一个直方图:

print(listOfHistograms[[1]])

enter image description here

ggplot的更多直方图选项:https://www.r-bloggers.com/how-to-make-a-histogram-with-ggplot2/

希望这会有所帮助

编辑:一张图中的多个图

一种方法是通过cowplot库:

library(cowplot)
plot_grid(plotlist=listOfHistograms[1:4])

enter image description here