R中的分离直方图

时间:2014-01-03 20:32:37

标签: r ggplot2 histogram

我正在使用以下代码在同一图表中生成三个不同的直方图。但是,我想知道,如果有可能将三个不同的直方图在三个不同的图中分开,并且在所有三个图的x轴上具有相同的比例。作为替代方案,我考虑将三个直方图转换为密度,并将它们保存在同一图表中。

require(ggplot2)
require(reshape2)

set.seed(1)
df <- data.frame(x = rnorm(n = 1000, mean = 2, sd = 0.2),
                 y = rnorm(n = 1000, mean = 2),
                 z = rnorm(n = 1000, mean = 2))



ggplot(melt(df), aes(value, fill = variable)) + geom_histogram(position = "dodge")+ scale_fill_manual(values = c('red','black','green'))

感谢。

1 个答案:

答案 0 :(得分:2)

试试这个:

gg <- melt(df)
ggplot(gg) + geom_bar(aes(x=value,fill=variable)) + facet_grid(variable~., scale.)

函数melt(...)将您的数据从“宽”格式(不同列中的值)转换为“长”格式(值在一列中,附加列指示哪个值与哪个变量一致。这是一个ggplot的首选格式。然后facet_grid(...)将不同的变量(x,y,z)放入不同的图形(或面板)中。

将此用于密度:

ggplot(gg) + 
  stat_density(aes(x=value, color=variable),geom="line",position="dodge")