R:geom_jitter因每次运行时缺少绘图值而删除不同数量的点

时间:2015-07-06 17:33:34

标签: r ggplot2

每次绘制数据时,R ggplot中的

geom_jitter似乎都会删除不同数量的点。我怀疑这是由于过度绘图(堆积点)?例如,如果我创建一次数据帧,然后多次运行ggplot命令,由于缺少数据(范围从0到1+),我将删除不同数量的点。有没有办法确保一致数量的缺失点(或没有)?我试着修改尺寸和抖动宽度/高度,但无济于事。谢谢!

d <- data.frame(a = rnorm(n = 100, mean = 0, sd = 1), b = rnorm(n = 100, mean = 0, sd = 1))


ggplot(d, aes(a,b)) + geom_point(position=position_jitter(width=0.3, height=.3), size=2) + theme(panel.background=element_blank()) + scale_x_continuous(limits=c(-3, 3)) + scale_y_continuous(limits=c(-3, 3))

3 个答案:

答案 0 :(得分:1)

抖动会使点超出您指定的范围,并且每次运行都会计算噪声。尝试自己抖动,这样每次都不会改变,或者删除范围限制。

set.seed(0)
d <- data.frame(a = rep(-2:2, each=20), b=rnorm(100))

## Specify your own jitter: 0.1 in width, 1 in height in this example
d <- d + rnorm(nrow(d)*2, 0, sd=rep(c(0.1, 1), each=nrow(d)))

## Always 4 rows removed, unless you rejitter
ggplot(d, aes(a, b)) +
  geom_point(size=2) +
  theme(panel.background=element_blank()) +
  scale_x_continuous(limits=c(-3,3)) +
  scale_y_continuous(limits=c(-3,3))

enter image description here

修改

实际上要简单得多,只需set.seed运行你拥有的东西:)

set.seed(0)
ggplot(d, aes(a,b)) +
  geom_point(position=position_jitter(width=0.3, height=.3), size=2) +
  theme(panel.background=element_blank()) + scale_x_continuous(limits=c(-3, 3)) +
  scale_y_continuous(limits=c(-3, 3))

答案 1 :(得分:1)

另一个选择是不使用1的{​​{1}}参数。相反,请使用limits的{​​{1}}和scale_x_continuous参数。这是用于放大绘图的一部分的代码。 x轴和y轴上的极限参数实际上对要绘制的数据进行子集。通常这没什么区别,除非你在谈论包括在情节上看不到的数据的统计摘要。

注意:当您的数据点超出图表时,您不会收到警告。

xlim

答案 2 :(得分:0)

另一个鲜为人知的选项是通过设置越界 (oob) 参数来更改比例处理其边界的方式。

这不是我的想法,但非常受user axeman in this very similar thread的启发。

library(ggplot2)
set.seed(0)
d <- data.frame(a = rnorm(n = 100, mean = 0, sd = 1), b = rnorm(n = 100, mean = 0, sd = 1))

ggplot(d, aes(a,b)) + 
  geom_point(position=position_jitter(width=0.3, height=.3), size=2) + 
  theme(panel.background=element_blank()) + 
  scale_x_continuous(limits=c(-3, 3), oob = scales::squish) + 
  scale_y_continuous(limits=c(-3, 3), oob = scales::squish)

reprex package (v2.0.0) 于 2021 年 4 月 27 日创建