R语言ggplot2气泡图实现结合阈值参考的连续颜色梯度配置
富集分析气泡图适配实现
调整逻辑
- 完全保留第一版的单x轴布局:所有气泡沿固定x值垂直排布,不会像第二版那样按p_value横向分散打乱布局
- 修正原第一版的映射缺陷:移除硬编码的阈值分色逻辑,将p_value作为连续颜色变量嵌入ggplot美学映射层,才能触发连续色阶效果
- 严格匹配原有规则:气泡尺寸绑定
abs(p_value)计算大小、保留Pathway字段的防遮挡标签标注
可直接运行的完整代码
# 需提前加载依赖包:dplyr、ggplot2、ggrepel library(dplyr) library(ggplot2) library(ggrepel) df %>% # 保留原逻辑:生成统一x值,实现所有气泡同列排布 mutate(X_value = "Term") %>% ggplot(aes(x = X_value, y = p_value)) + geom_point(aes( color = p_value, size = abs(p_value) )) + geom_label_repel(aes(label = Pathway), size = 3) + # 连续色阶配置,可自由替换配色方案 scale_color_gradientn(colours = rainbow(5)) + theme( axis.title = element_text(face = "bold"), axis.text = element_text(face = "bold") ) + labs( y = NULL, x = NULL, color = "p_value", size = "p_value" )
细节说明
- 原第一版代码的两个核心问题:一是无法触发连续色——把
color = case_when(...)写在geom_point的aes参数外部,属于给所有点分配静态固定颜色,没有把p_value变量传入ggplot的映射系统,因此后续色阶配置不会生效;二是原阈值分色逻辑存在覆盖漏洞,当前数据集内的p_value全部小于6,原本的离散分色规则实际不会生效 - 若觉得彩虹色配色辨识度不足,可将
scale_color_gradientn(colours = rainbow(5))替换为科研绘图常用的连续配色,比如scale_color_viridis_c(),视觉柔和且色盲友好 - 如果标签出现严重遮挡,可在
geom_label_repel中补充参数优化布局,比如设置box.padding = 0.6、max.overlaps = 10调整标签避让范围
内容的提问来源于stack exchange,提问作者PesKchan
相关产品推荐
相关产品推荐

