【问题标题】:R - How can I plot multiple histograms together?R - 如何将多个直方图绘制在一起?
【发布时间】:2015-01-14 22:36:19
【问题描述】:

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

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)

生产者:

我不喜欢条形的不透明特性,因为它们掩盖了重叠直方图的形状。我知道我可以使用找到的代码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 命令的理解还不够好,甚至无法知道原因。请帮忙。

【问题讨论】:

  • 对于ggplot,首先像this answer那样融化数据会更容易
  • @rawr:我不明白融化的作用。它说它创建了一个“熔化的数据框”,但我不知道这是什么意思

标签: r histogram


【解决方案1】:

我倾向于使用方面来做到这一点。否则,使用您的数据集,结果是不可理解的。

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对数据进行分组。

【讨论】:

  • 这很好用,是我的问题的优雅解决方案。我仍然不明白熔化的作用或熔化的数据框是什么。
  • @Slavatron 看起来它把 df 变成了一个单一的向量来轻松地组织它
猜你喜欢
  • 2011-04-02
  • 2014-05-30
  • 2015-05-31
  • 2012-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多