如何从不同的系列空间分离的地毯地块(How to spatially separate rug pl

2019-09-02 02:34发布

我试图以图形方式评估分布的数据集,其中每个数据集的数据点的数量可以有很大的不同的(双峰与单峰)。 我的问题是,表示数据点的数量,使用类似地毯的地块,但要避免一系列的问题,许多数据点overhwelm只有几个点的系列。

目前我参与的工作ggplot2 ,结合geom_densitygeom_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()

这几乎是我想要做什么 - 但“一”点获得由“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)

然而,这是不令人满意的,因为y的位置必须手动调整。 是否有从不同系列分开地毯地块,例如使用位置调整更自动化的方式?

Answer 1:

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



文章来源: How to spatially separate rug plots from different series
标签: r ggplot2