You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何移除ggplot2中gghighlight高亮Control/CondA后的灰色抖动点?

解决方法

要去掉未高亮组的灰色抖动点,最直接的办法是只给需要高亮的组绘制抖动点,同时保留所有组的箱线图。具体修改如下:

  • 给geom_jitter加上data参数,只筛选Control和CondA组的数据,这样其他组不会生成抖动点,自然就没了灰色点的问题。

修改后的完整代码:

library(ggplot2)
library(gghighlight)
library(ggrepel)
library(dplyr)

set.seed(123)  # 保证抖动位置一致
ggplot(data_in, aes(x = condition, y = count)) + 
  geom_boxplot(aes(group = condition), color = "black") + 
  # 仅绘制高亮组的抖动点
  geom_jitter(width = 0.2, aes(color = condition), size = 3,
              data = data_in %>% filter(condition %in% c("Control", "CondA"))) + 
  geom_label_repel(data=data_in %>% filter(!condition %in% c("Control", "CondA")), 
                   aes(label = Samples)) +
  gghighlight(condition %in% c("Control", "CondA"),
              label_key = Samples,
              use_group_by = FALSE) +   
  theme_minimal()

如果想保留所有组的抖动点但隐藏灰色的未高亮点,也可以用gghighlight的unhighlighted_params把未高亮元素设为完全透明,但要注意这会影响所有未高亮的图层(比如其他未高亮元素也会变透明),代码参考:

set.seed(123)
ggplot(data_in, aes(x = condition, y = count)) + 
  geom_boxplot(aes(group = condition), color = "black") + 
  geom_jitter(width = 0.2, aes(color = condition), size = 3) + 
  geom_label_repel(data=data_in %>% filter(!condition %in% c("Control", "CondA")), 
                   aes(label = Samples)) +
  gghighlight(condition %in% c("Control", "CondA"),
              label_key = Samples,
              use_group_by = FALSE,
              # 将未高亮元素设为完全透明
              unhighlighted_params = list(alpha = 0)) +   
  theme_minimal()

相比之下第一种方案更精准,只会针对抖动点做过滤,不会影响箱线图的正常显示。

内容的提问来源于stack exchange,提问作者sahuno

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 13:02:48