所以这些实际上并不是密度图本身 - 它们是具有给定均值和标准偏差的正态分布密度图。
这可以在ggplot2 中完成,但您需要将主题和摘要表扩展为点网格和这些点的正常密度。
这是一个例子。首先,组成一些数据,包括主题ID和一些模拟样本平均值和样本标准差。
library(tidyverse)
set.seed(1)
foo <- data_frame(Subject = LETTERS[1:10], avg=runif(10, 10,20), stdev=runif(10,1,2))
现在,对于每个主题,我们需要获得一个合适的“x”值网格以及在这些“x”值处评估的正常密度(对于该主题的avg 和stdev)。我选择了加/减 4 个标准差。这可以使用do 来完成。但这会产生一个有趣的数据框,其中有一列由数据框组成。我使用unnest 来分解数据框。
bar <- foo %>%
group_by(Subject) %>%
do(densities=data_frame(x=seq(.$avg-4*.$stdev, .$avg+4*.$stdev, length.out = 50),
density=dnorm(x, .$avg, .$stdev))) %>%
unnest()
看看bar 看看发生了什么。现在我们可以使用ggplot2 将所有这些正常密度放在同一个图上。我猜有很多主题,你不会想要情节的传奇。
bar %>%
ggplot(aes(x=x, y=density, color=Subject)) +
geom_line(show.legend = FALSE)