R 如何从不同系列中空间分离地毯图

R 如何从不同系列中空间分离地毯图,r,ggplot2,R,Ggplot2,我试图以图形方式评估数据集的分布(双峰与单峰),其中每个数据集的数据点数量可能差异很大。我的问题是使用类似于地毯图的方法来指示数据点的数量,但要避免一个数据点多的序列超过一个只有几个点的序列的问题 目前我在ggplot2工作,结合geom_density和geom_rug如下: # Set up data: 1000 bimodal "b" points; 20 unimodal "a" points set.seed(0); require(ggplot2) x <- c(rnorm(5

我试图以图形方式评估数据集的分布(双峰与单峰),其中每个数据集的数据点数量可能差异很大。我的问题是使用类似于地毯图的方法来指示数据点的数量,但要避免一个数据点多的序列超过一个只有几个点的序列的问题

目前我在
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()


但是,这并不令人满意,因为y位置必须手动调整。是否有更自动的方法从不同系列中分离地毯图,例如使用位置调整?

一种方法是使用两个
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")

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")