我有来自2个人群的数据。 我想在同一图形上得到两者的直方图和密度图。 一种颜色为一种颜色,另一种颜色为另一种颜色。
我试过这个(例子):
library(ggplot2)
AA <- rnorm(100000, 70,20)
BB <- rnorm(100000,120,20)
valores <- c(AA,BB)
grupo <- c(rep("AA", 100000),c(rep("BB", 100000)))
todo <- data.frame(valores, grupo)
ggplot(todo, aes(x=valores, fill=grupo, color=grupo)) +
geom_histogram(aes(y=..density..), binwidth=3)+ geom_density(aes(color=grupo))
我想为两条密度线设置不同的颜色。如果可能的话,也可以使用直方图。
我用ggplot2完成了它,但是基础R也可以。
或者我不知道我改变了什么,现在我明白了:
ggplot(todo, aes(x=valores, fill=grupo, color=grupo)) +
geom_histogram( position="identity", binwidth=3, alpha=0.5)+
geom_density(aes(color=grupo))
甚至是奇怪的事情
答案 0 :(得分:2)
我建议使用这个ggplot2解决方案:
ggplot(todo, aes(valores, color=grupo)) +
geom_histogram(position="identity", binwidth=3, aes(y=..density.., fill=grupo), alpha=0.5) +
geom_density()
@skan:您的尝试很接近,但您在直方图中绘制了频率而不是密度值。
答案 1 :(得分:1)
基础R解决方案可能是:
hist(AA, probability = T, col = rgb(1,0,0,0.5), border = rgb(1,0,0,1),
xlim=range(AA,BB), breaks= 50, ylim=c(0,0.025), main="AA and BB", xlab = "")
hist(BB, probability = T, col = rgb(0,0,1,0.5), border = rgb(0,0,1,1), add=T)
lines(density(AA))
lines(density(BB), lty=2)
对于alpha我使用了rgb
。但是有更多方法可以使用它。例如,请参阅alpha()
包中的scales
。我还添加了AA的断点参数,以增加与BB组相比的binwidth。