我正在尝试创建一个散点图,其中的点被抖动(geom_jitter
),但我还想在每个点周围创建一个黑色轮廓。目前,我通过添加两个geom_jitter
来实现,一个用于填充,另一个用于轮廓:
beta <- paste("beta == ", "0.15")
ggplot(aes(x=xVar, y = yVar), data = data) +
geom_jitter(size=3, alpha=0.6, colour=my.cols[2]) +
theme_bw() +
geom_abline(intercept = 0.0, slope = 0.145950, size=1) +
geom_vline(xintercept = 0, linetype = "dashed") +
annotate("text", x = 2.5, y = 0.2, label=beta, parse=TRUE, size=5)+
xlim(-1.5,4) +
ylim(-2,2)+
geom_jitter(shape = 1,size = 3,colour = "black")
然而,这会导致类似这样的结果: 因为抖动会随机偏移数据,所以2个geom_jitters不会对齐。我该如何确保轮廓线与填充点在同一位置?
我已经看到了相关主题(例如Is it possible to jitter two ggplot geoms in the same way?),但它们非常陈旧,不确定ggplot是否添加了任何新内容来解决此问题。
如果我使用常规的
geom_point
而不是geom_jitter
,则上述代码有效,但是我的重叠点太多了,无法使用。编辑:
发布的答案中的解决方案有效。但是,它对我的其他图表不太合作,在那些图表中,我通过某些其他变量进行分组,并使用该变量绘制不同颜色。
ggplot(aes(x=xVar, y = yVar, color=group), data = data) +
geom_jitter(size=3, alpha=0.6, shape=21, fill="skyblue") +
theme_bw() +
geom_vline(xintercept = 0, linetype = "dashed") +
scale_colour_brewer(name = "Title", direction = -1, palette = "Set1") +
xlim(-1.5,4) +
ylim(-2,2)
我的group
变量有3个级别,我希望在brewer的Set1
调色板中为每个组别级别着不同的颜色。当前的解决方案只会将所有内容着成天蓝色。我应该填什么以确保使用正确的颜色调色板?
ggplot()
之前对数据进行jitter
吗? - Hugh