我有两个数据集,它们的大小是500和1000.我想在一个图中绘制这两个数据集的密度。
我在谷歌做了一些搜索。
以上线程中的数据集是相同的
df <- data.frame(x = rnorm(1000, 0, 1), y = rnorm(1000, 0, 2), z = rnorm(1000, 2, 1.5))
但是如果我有不同的数据大小,我应该首先规范化数据,以便比较数据集之间的密度。
是否可以在ggplot2中制作具有不同数据大小的密度图?
答案 0 :(得分:5)
默认情况下,所有密度都会缩放到单位面积。如果您有两个具有不同数据量的数据集,则可以将它们一起绘制:
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"))