在 R 中覆盖 10 个密度图,颜色与重叠图的数量成正比

Posted

技术标签:

【中文标题】在 R 中覆盖 10 个密度图,颜色与重叠图的数量成正比【英文标题】:Overlay 10 density plots in R with colour proportional to number of overlapping plots 【发布时间】:2012-10-08 07:17:09 【问题描述】:

我有一个包含 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 有关,但我自己理解的不够多。

【问题讨论】:

【参考方案1】:

这可以通过使用group 美学并将fill 的密度设为浅灰色阴影来完成,例如gray10gray20

ggplot(MyData, aes(x=value, group=variable)) + geom_density(alpha = 0.5, fill="gray20")

这会给你:

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

【讨论】:

谢谢,这正是我想要的。我将我的 10 组“正确”数据集的 fill="gray20" 更改为 fill="gray10",它运行良好!

以上是关于在 R 中覆盖 10 个密度图,颜色与重叠图的数量成正比的主要内容,如果未能解决你的问题,请参考以下文章

R散点图:符号颜色代表重叠点的数量

在ggplot2中强制密度图的颜色

R语言 | 密度图

重叠堆积密度图

r语言绘制核密度图怎么计算重叠

R可视化ggplot2绘制重叠密度图(Overlay Density Plots)