我有两个数据集,它们的大小是500和1000.我想在一个图中绘制这两个数据集的密度.
我在谷歌做了一些搜索.
R-的geom密度值功能于y轴
GGPLOT2-绘制二个或更多的重叠密度-曲线 - 上的-同图/
上面线程中的数据集是相同的
df <- data.frame(x = rnorm(1000, 0, 1), y = rnorm(1000, 0, 2), z = rnorm(1000, 2, 1.5))
但是如果我有不同的数据大小,我应该首先规范化数据,以便比较数据集之间的密度.
是否有可能在ggplot2中制作具有不同数据大小的密度图?
默认情况下,所有密度都按比例缩放到单位面积。如果您有两个数据量不同的数据集,则可以将它们绘制在一起,如下所示:
df1 <- data.frame(x = rnorm(1000, 0, 2)) df2 <- data.frame(y = rnorm(500, 1, 1)) ggplot() + geom_density(data = df1, aes(x = x), fill = "#E69F00", color = "black", alpha = 0.7) + geom_density(data = df2, aes(x = y), fill = "#56B4E9", color = "black", alpha = 0.7)
但是,根据您的最新评论,我认为那不是您想要的。相反,您希望相对于每个组中的数据量来缩放密度曲线下的面积。您可以通过..count..
美学来做到这一点:
df1 <- data.frame(x = rnorm(1000, 0, 2), label=rep('df1', 1000)) df2 <- data.frame(x = rnorm(500, 1, 1), label=rep('df2', 500)) df=rbind(df1, df2) ggplot(df, aes(x, y=..count.., fill=label)) + geom_density(color = "black", alpha = 0.7) + scale_fill_manual(values = c("#E69F00", "#56B4E9"))