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

如何移除ggplot2中scale_colour_gradientn图例的百分比刻度并自定义

你设置breaks后图例消失的核心原因是:你映射到颜色维度的变量是-Adj.P.Value,取值范围在~[-1, 0]区间,而你之前填写的breaks全部是0~1的正数,完全不在变量的值域范围内,ggplot无法识别有效刻度,因此直接隐藏了颜色图例。

修正后的完整代码

library(ggplot2)
# 示例数据集
df <- structure(list(Mean.Count = c(30404.8407153174, 15689.4221807262, 
30404.8407153174, 15689.4221807262), 
              Log2FC = c(-0.00357013689574257, -0.00417251481039714, 0.306809506669248, 0.224653107007472), 
              Adj.P.Value = c(0.988865360408676, 0.981816989495127, 0.00202882891738576, 2.72576774009609e-05), 
               TimeKD = c("A", "A", "B", "B"), 
               Gene = c("HSPA5", "MYH9", "HSPA5", "MYH9")), 
               row.names = c("HSPA5", "MYH9", "HSPA51", "MYH91"), 
               class = "data.frame")

# 绘图代码
ggplot(df, aes(x = Gene, y = Log2FC, group=TimeKD)) + 
  geom_point(aes(color = -Adj.P.Value, size = Mean.Count, shape = TimeKD), alpha = 0.5)+
  coord_flip() +
  scale_colour_gradientn(
    colours = grDevices::colorRampPalette(c("black", "cyan", "violet"))(n = 200),
    values = c(0.0, 1.0), 
    # 适配负向值域设置breaks,即可替换默认的百分比刻度
    breaks = c(-1.0, -0.1, -0.001, -0.0001, 0.0),
    # 可选:配置labels显示原始校正p值,可读性更强
    labels = c(1.0, 0.1, 0.001, 0.0001, 0.0),
    space = "Lab",
    na.value = "grey50",
    guide = "colourbar",
    aesthetics = "colour"
  )+
  scale_x_discrete(limits = rev)

可选优化方案

如果希望颜色映射逻辑更符合差异分析的通用展示习惯(校正p值越小,对应颜色越亮),可以将颜色映射变量改为-log10(Adj.P.Value),此时值域为正数,设置breaks时无需额外添加负号:

# 仅需修改aes的color映射和breaks设置即可
ggplot(df, aes(x = Gene, y = Log2FC, group=TimeKD)) + 
  geom_point(aes(color = -log10(Adj.P.Value), size = Mean.Count, shape = TimeKD), alpha = 0.5)+
  coord_flip() +
  scale_colour_gradientn(
    colours = grDevices::colorRampPalette(c("black", "cyan", "violet"))(n = 200),
    values = c(0.0, 1.0), 
    # 此处breaks对应-log10(Adj.P.Value)的取值,数值越大代表p值越小
    breaks = c(0, 1, 3, 4.5),
    labels = c(1, 0.1, 0.001, 0.00003),
    space = "Lab",
    na.value = "grey50",
    guide = "colourbar",
    aesthetics = "colour"
  )+
  scale_x_discrete(limits = rev)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 19:06:05