使用ggplot将数据框中的每一列绘制为一页上的直方图

时间:2012-10-23 17:15:28

标签: r ggplot2

我想在一页上使用直方图绘制data.frame的每一列。以下是使用R:

附带的样本“钻石”数据集的示例
p = list()
for (i in 1:ncol(diamonds)) p[[i]] <- qplot(diamonds[,i], xlab=names(diamonds)[[i]])
do.call(grid.arrange, p)

enter image description here

这会绘制所有列,但每个列的数据看起来都相同。所以,有些事情显然是错误的。

这是完成此任务的正确方法吗?我确定我在某个地方有一些愚蠢的语法,它将相同的列数据集分配给列表中的每个元素,但我不确定它是什么。

谢谢

1 个答案:

答案 0 :(得分:39)

你走了:

library(reshape2)
library(ggplot2)
d <- melt(diamonds[,-c(2:4)])
ggplot(d,aes(x = value)) + 
    facet_wrap(~variable,scales = "free_x") + 
    geom_histogram()

enter image description here

melt允许我们使用生成的分组变量(称为variable)将数据分组并绘制每个变量的直方图。请注意scales = "free_x"的使用,因为每个变量的范围和比例都有明显不同。