在R中叠加10个密度图,颜色与重叠图的数量成比例。

7

我有一个数据集,包含224900个观察值和10个变量。这些变量是不同的泰勒级数反演到原始数据值的结果。我希望将这10个变量的密度图叠加在一起,以显示泰勒级数反演对数据估计的鲁棒性水平。我不想只有10条线,而是想使用颜色来表示,使每个密度图都贡献10%的灰度。如果某些数据仅涉及其中一个图形,则应为10%灰色,两个图形将比20%更深,直到所有密度图重叠,这将是100%。

我已经使用了melt函数将得到一个由2249000行组成的数据框。它有三列,第一列是人员ID,第二列是分组变量(variable),第三列是每日千焦耳摄入量的值(value)。

我已经使用以下代码在ggplot2中叠加了密度图,但它使用不同的颜色来表示不同的分组。如何更改此代码以获得我需要的灰度调色板?我希望所有10个分组都具有相同的颜色和颜色密度;绘图的目的仅是使用灰度直观地显示密度图的重叠程度。

ggplot(Energy, aes(x=value, fill=variable)) + geom_density(alpha = 0.5)

以下是一些测试数据,供那些希望提供帮助的人使用,使用5个组而不是10个:

variable <- c(rep("A",100), rep("B",100), rep("C",100), rep("D",100), rep("E",100))
value <- c(rnorm(100,5000,200), rnorm(100,5050,210), rnorm(100,5100,215), 
           rnorm(100,5150,220), rnorm(100,5200,225))
MyData <- cbind.data.frame(value, variable)
ggplot(MyData, aes(x=value, fill=variable)) + geom_density(alpha = 0.5)

我认为答案可能与修改scale_colour_grey和/或scale_manual有关,但我自己不理解得足够多,无法解决这个问题。

1个回答

9
这可以通过使用“group”美学并将密度的“fill”设置为浅灰色(如“gray10”或“gray20”)来完成:
ggplot(MyData, aes(x=value, group=variable)) + geom_density(alpha = 0.5, fill="gray20")

这将给你:

密度图

在您的情况下,您可能需要使用gray10,因为您有10个组,而不是这里绘制的5个组。


谢谢,这正是我想要的。我将 fill="gray20" 更改为 fill="gray10" 适用于我的 10 组“proper”数据集,现在它完美地工作了! - Michelle

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接