ggplot2密度绘制R中不同大小的数据

时间:2017-12-07 04:09:02

标签: r ggplot2

我有两个数据集,它们的大小是500和1000.我想在一个图中绘制这两个数据集的密度。
我在谷歌做了一些搜索。

以上线程中的数据集是相同的

df <- data.frame(x = rnorm(1000, 0, 1), y = rnorm(1000, 0, 2), z = rnorm(1000, 2, 1.5))

但是如果我有不同的数据大小,我应该首先规范化数据,以便比较数据集之间的密度。

是否可以在ggplot2中制作具有不同数据大小的密度图?

1 个答案:

答案 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)

enter image description here

但是,根据您的最新评论,我认为这不是您想要的。相反,您希望密度曲线下的区域相对于每个组中的数据量进行缩放。你可以用..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"))

enter image description here