一次制作多个直方图并保存

时间:2019-11-19 17:12:42

标签: r histogram

我想对数据集的第5-34列进行直方图保存,以备参考。这就是我所拥有的,并且不断出现错误“ x必须是数字”。所有这些列都有数字数据。

[数据截图] [1]

dput(longbroca)
histograms = c()
GBhistograms = c()
RThistograms = c()
for (i in 5:34){

  hist(longbroca)
  hist(GBlongbroca)
  hist(RTlongbroca)

  histograms = c(histograms, hist(longbroca[,5:34]))
GBhistograms = c(GBhistograms, hist(GBlongbroca[,5:34]))
RThistograms = c(RThistograms, hist(RTlongbroca[,5:34]))

}

#reproducible
fakerow1 <- c(100,80,60,40,20)
fakerow2 <- c(100,80,60,40,20)
fakedata = rbind(fakerow1,fakerow2)
colnames(fakedata) = c('ant1','ant2','ant3','ant4','ant5')

1 个答案:

答案 0 :(得分:0)

不能使用单个hist()函数来绘制所有列。这就是为什么您收到错误消息的原因。您正在绘制直方图并保存直方图的输出列表。您的代码不保存任何直方图,仅保存用于生成直方图的数据。如果您确实要保存绘制的直方图,则需要将它们绘制到设备上(例如pdf)。

我们可以使用R(iris)附带的data(iris)数据集作为示例数据。前4列为数字。如果只需要iris数据集中的直方图数据(第1列到第4列):

# R will plot all four but you will only see the last one.
histograms <- lapply(iris[, 1:4], hist)

变量histograms是一个包含6个元素的列表。这些功能记录在功能手册(?hist)的手册页上。

# To plot one of the histograms with a title and x-axis label:
lbl <- names(histograms)
plot(histograms[[1]], main=lbl[1], xlab=lbl[1])

# To plot them all
pdf("histograms.pdf")
lapply(1:4, function(x) plot(histograms[[x]], main=lbl[x], xlab=lbl[x]))
dev.off()

文件“ histograms.pdf”将具有全部四个直方图,每页一个。