我试图以图形方式评估数据集的分布(双峰与单峰),其中每个数据集的数据点数可以有很大差异.我的问题是使用像地块这样的东西来指示数据点的数量,但是为了避免出现一系列具有许多数据点的问题,这个数据点过多地只有几个点.
目前我的工作中ggplot2,结合geom_density和geom_rug像这样:
# Set up data: 1000 bimodal "b" points; 20 unimodal "a" points
set.seed(0); require(ggplot2)
x <- c(rnorm(500, mean=10, sd=1), rnorm(500, mean=5, sd=1), rnorm(20, mean=7, sd=1))
l <- c(rep("b", 1000), rep("a", 20))
d <- data.frame(x=x, l=l)
ggplot(d, aes(x=x, colour=l)) + geom_density() + geom_rug()
Run Code Online (Sandbox Code Playgroud)

这几乎可以做我想要的 - 但是"a"点被"b"点淹没了.
我砍死使用的解决方案geom_point,而不是geom_rug:
d$ypos <- NA
d$ypos[d$l=="b"] <- 0
d$ypos[d$l=="a"] <- 0.01
ggplot() +
geom_density(data=d, aes(x=x, colour=l)) +
geom_point(data=d, aes(x=x, y=ypos, colour=l), alpha=0.5)
Run Code Online (Sandbox Code Playgroud)

然而,这是不令人满意的,因为必须手动调整y位置.有没有更自动的方法来分离不同系列的地毯图,例如使用位置调整?
Did*_*rts 12
一种方法是使用两个geom_rug()调用 - 一个用于b,另一个用于a.然后在一geom_rug()组中将sides="t"它们绘制在顶部.
ggplot(d, aes(x=x, colour=l)) + geom_density() +
geom_rug(data=subset(d,l=="b"),aes(x=x)) +
geom_rug(data=subset(d,l=="a"),aes(x=x),sides="t")
Run Code Online (Sandbox Code Playgroud)
