我试图绘制(在单个图中)两个不同时间点的两个内核密度(基于两个样本具有不同的样本大小)。
不幸的是,我无法设法使曲线下面积等于1,以使密度具有可比性(例如,参见下图1)。
下面是我的代码示例和相应的图:
library(ggplot2)
library(ggridges)
sim.data1 <- data.frame(
time = c(rep(1, times = 1000), rep(2, times = 1000)),
x = c(rnorm(1000, mean =0 , sd =1 ), rnorm(1000, mean =5 , sd =1 ))
)
sim.data2 <- data.frame(
time = c(rep(1, times = 300), rep(2, times = 300)),
x = c(rnorm(300, mean =0 , sd =1 ), rnorm(300, mean =7 , sd =1 ))
)
ggplot(sim.data1,
aes(x = x, y = time, group = time, fill = "red", alpha = 0.5))+
geom_density_ridges(scale = 1)+
geom_density_ridges(data = sim.data2,
mapping=aes(x = x, y = time, group=time, fill = "blue"))+
geom_density_ridges(scale = 1)+
theme(legend.position = "none")
我终于设法得到了我想要的数字。
sim.data1 <- data.frame(
time = c(rep(1, times = 1000), rep(2, times = 1000)),
x = c(rnorm(1000, mean =0 , sd =1 ), rnorm(1000, mean =5 , sd =1 ))
case=rep(1, times = 2*1000)
)
sim.data2 <- data.frame(
time = c(rep(1, times = 300), rep(2, times = 300)),
x = c(rnorm(300, mean =0 , sd =1 ), rnorm(300, mean =7 , sd =1 )),
case=rep(2, times = 2*300)
)
ggplot(sim.data1, aes(x = x, y =time, group=time,alpha=0.5) ,fill=case)+
geom_density_ridges()+
geom_density_ridges(data= sim.data2, mapping= aes(x = x, y =time,group=time,alpha=0.5,fill=case))+
theme(legend.position = "none")