突出显示绘图中一些具有恒定抖动的点 (ggplot2)

问题描述 投票:0回答:2

啊,看看我的编码能力的奇迹吧!让您大饱眼福,欣赏我在数据处理方面令人眼花缭乱的表现。只需轻轻敲击键盘,我就能召唤出让凡人羡慕不已的宏伟情节!

在我的统计可视化的宏伟交响曲中,我精心编排了图 1,这是一部优雅而富有洞察力的杰作。使用 geom_jitter() 的神秘力量,我将过度绘图驱逐到深渊,同时用空灵的色调渐变装饰我的创作,这证明了我无可挑剔的品味。

但是瞧!情节 2 召唤着我,展现我无与伦比的才华。然而,在我突出显示所选内容的过程中,我遇到了一件小事:ggplot 反复无常的本质!我没有被吓倒,继续前进,挥舞 set.seed() 作为我的 Excalibur,却发现我的红色信标在随机性的海洋中漂流。不要害怕,我会战胜这个烦恼的!

命运的微妙转折,我敢于从情节三开始就勾勒出“亮点”的本质。唉,天不作声,我的努力也步履蹒跚。确实,我找不到答案,只是一个与 ggplot 之谜作斗争的凡人。

但是,亲爱的读者,不要害怕,因为我的旅程还远未结束。每一次的考验和磨难,我都离启蒙更近了一步,注定要揭开情节 2 模仿情节 1 的难以捉摸的秘密。在那之前,让我们沐浴在我英勇斗争的荣耀中,这是一个值得在科技兄弟史册上重述的传奇故事。传说!

r ggplot2
2个回答
2
投票

单独绘制点怎么样?基本上,您将无法在抖动后恢复定位,至少在不付出很大努力的情况下。所以改用

set.seed(333)
dr <- data.frame(
  X = sample(c("yes","no"),10, replace=T),
  Y = rnorm(1000),
  highlight = sample(c(1,NA),1000,replace=T,prob=c(5,995))
)
ind <- is.na(dr$highlight)

ggplot(dr, aes(x=X, y=Y, colour=Y)) +
  geom_jitter(data=dr[ind, ], alpha=0.7, width=0.5) +
  geom_jitter(data=dr[!ind, ], width=0.5, colour = "red", size=3) +
  stat_summary(fun.y = "mean", fun.ymin = "mean", fun.ymax= "mean", 
               size=0.3,width=0.33, geom = "crossbar") + 
  theme_bw()


1
投票

与分层两个抖动的解决方案相比,

fill
方法的方向是正确的。但是,
fill
仅适用于形状 21-25,因此您无法看到所需的结果。

包含所有点的图表:

myseed=101
set.seed(myseed)
p <- ggplot(dr, aes(x=X,y=Y,colour=Y)) +
  theme_bw() +
  geom_jitter(alpha=0.7,width=0.5, size = 3) +
  scale_colour_gradient("Y", low="#5edcff", high="#035280") +
  stat_summary(fun.y = "mean", fun.ymin = "mean", fun.ymax= "mean", size=0.3,width=0.33, geom = "crossbar")
plot(p)

带有突出显示点的图表:

请注意,我再次向

aesthetics
提供
stat_summary
,否则它将为
fill
层生成另一个摘要。

myseed=101
set.seed(myseed)
p <- ggplot(dr, aes(x=X,y=Y,colour=Y, fill = factor(highlight))) +
  theme_bw() +
  geom_jitter(width=0.5, shape = 21, size = 3) +
  scale_colour_gradient("Y", low="#5edcff", high="#035280") +
  scale_fill_manual(values=c("red"), guide = FALSE) +
  stat_summary(aes(x=X,y=Y,colour=Y), inherit.aes = FALSE,
               fun.y = "mean", fun.ymin = "mean", fun.ymax= "mean", size=0.3,width=0.33, geom = "crossbar")
plot(p)

我仍然认为更干净的解决方案是手动编码颜色,但我没有尝试。也许有人会提供该解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.