我有一个包含224900个观测数据和10个变量的数据集,这些数据集是不同泰勒级数回归原始数据值的结果。我希望覆盖这10个变量中每个变量的密度图,以显示泰勒级数反向变换对数据估计的鲁棒性水平。我不认为只有10行,而是应用颜色会很好,因此每个密度图都会产生10%的灰度。如果有数据只与其中一个图有关,那么将有10%的灰色,两个图表将是20%的两倍,直到所有密度图重叠的位置,这将是100%。
我使用melt
来获取长度为2249000行的数据帧。有三列,第一列是人物ID,第二列是分组变量(variable
),第三列是每日kJ摄入量(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
有关,但我不了解自己是否可以解决这个问题。
答案 0 :(得分:9)
这可以通过使用group
美学来完成,并使fill
密度为浅色灰色,如gray10
或gray20
:
ggplot(MyData, aes(x=value, group=variable)) + geom_density(alpha = 0.5, fill="gray20")
哪个会给你:
在您的情况下,您可能需要gray10
,因为您有10个组,而不是此处绘制的5个组。