如何移除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
相关产品推荐
相关产品推荐

