R - 如何将多个直方图绘制在一起?

标签 r histogram

我有一个包含四列的数据框,如下所示:

Beef-Low    Beef-High   Cereal-Low  Cereal-High
90          73          107         98
76          102         95          74
90          118         97          56
64          104         80          111
86          81          98          95
51          107         74          88
72          100         74          82
90          87          67          77
95          117         89          86
78          111         58          92

我想制作一个直方图,将所有四列显示为不同颜色的条形 所以我试过:
> hist(wt$Beef.Low, main="Weight Gain Across Four Diets", xlab="Weight Gain", col="coral", xlim=c(0,120), ylim=c(0,4))
> hist(wt$Beef.High, col="coral3", add=T)
> hist(wt$Cereal.Low, col="yellow", add=T)
> hist(wt$Cereal.High, col="yellow3", add=T)

其中产生:

Histogram

我不喜欢条形的不透明特性,因为它们掩盖了重叠直方图的形状。我知道我可以使用找到的代码 here手动管理直方图的颜色;但这似乎是一个乏味的过程,我确信一定有更好的方法。

相反,我试图复制在这个 question 中所做的事情。
> bl = wt$Beef.Low
> bh = wt$Beef.High
> cl = wt$Cereal.Low
> ch = wt$Cereal.High
> wts = rbind(bl,bh,cl,ch)
> wtss = as.data.frame(wts)
> ggplot(wtss, aes("Weight", fill="Diet")) + geom_histogram(alpha=0.5, aes(y = "Frequency"), position="identity")

但它不起作用,我对 ggplot 命令的理解不够好,甚至不知道为什么。请帮忙。

最佳答案

我倾向于用刻面来做到这一点。否则,对于您的数据集,结果是难以理解的。

library(reshape2)
library(ggplot2)
gg <- melt(wt)
ggplot(gg, aes(x=value, fill=variable)) +
  geom_histogram(binwidth=10)+
  facet_grid(variable~.)



编辑 : 对 OP 评论的回应。
melt(...)将数据框从“宽”格式 - 不同列中的数据 - 转换为“长”格式 - 一列中的所有数据,第二列区分不同类型的数据(例如,识别行中的数据来自)。

如果您使用 melt(...)使用默认值,如上,它创建一个包含两列的数据框:$value包含实际数据,和 $variable包含此数据来自的列的名称(在起始数据框中)。比较 wtgg我想你会明白我的意思。

所以这里我们使用 value为 x 轴,并根据 variable 对数据进行分组.

关于R - 如何将多个直方图绘制在一起?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26982465/

相关文章:

r - 在 R 中查找数据框中的所有唯一字符

r - do.call 和 curve 无法在另一个函数环境中绘制函数

r - 不同点大小的相关散点矩阵图(R 中)

python - matplotlib 中的多步直方图

r - 使用 ggplot geom_histogram() 与 y-log-scale 和零箱

r - 具有不同 bin 宽度的直方图

r - r中的订购日期问题

r - 如何标准化 model.matrix?

python - 在Python中返回给定x和y的二维PDF的值?

python - Matplotlib 直方图在第二个直方图箱中添加了一个小条