我正在使用以下代码在同一图表中生成三个不同的直方图。但是,我想知道,如果有可能将三个不同的直方图在三个不同的图中分开,并且在所有三个图的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'))
感谢。
答案 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")