我想使两个几何图形抖动相同的数量。考虑下面的最小示例:
library(ggplot2)
pdat <- data.frame(x = c(1,1,2,2,4,4,8,8),
y = c(1,1.1,2,2.2,3,3.3,4,4.4),
ymin = c(1,1.1,2,2.2,3,3.3,4,4.4)-.9^(0:7),
ymax = c(1,1.1,2,2.2,3,3.3,4,4.4)+.9^(0:7),
colour = as.factor(rep(1:2,4)))
ggplot(pdat, aes(x=x,y=y,ymin=ymin,ymax=ymax,color=colour)) +
geom_linerange(position='jitter') + geom_point(position='jitter')
ggplot(pdat, aes(x=jitter(x),y=y,ymin=ymin,ymax=ymax,color=colour)) +
geom_linerange() + geom_point()
在这两种情况下,抖动在几何之间都是随机的(点和线范围位于不同的位置),而我希望它们对于每个数据点(点在相应线范围的中间)保持一致。这可能吗?
请注意,我不会考虑将噪声手动添加到x
变量中作为解决方案,因为这会破坏应用坐标变换的能力。例如,定义pdat$x2 <- pdat$x+rnorm(8)/10
,
ggplot(pdat, aes(x=x2,y=y,ymin=ymin,ymax=ymax,color=colour)) +
geom_linerange() + geom_point()
看起来不错,但随后抖动的变化会受到任何后续转换的影响,如
ggplot(pdat,aes(x=x2,y=y,ymin=ymin,ymax=ymax,color=colour)) +
geom_linerange() + geom_point() + scale_x_log10()
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句