【问题标题】:Legends not showing up properly in heatmap with ggplot2使用 ggplot2 在热图中未正确显示图例
【发布时间】:2015-05-18 18:42:13
【问题描述】:

我正在尝试根据示例代码here 在 ggplot2 中使用geom_tile 制作标准化读取丰度值的热图。我当前的代码为所需范围生成热图,但由于某种原因,热图中仅显示了 7 个范围中的 4 个,我无法弄清楚问题所在。当我按照原始链接中的示例进行操作时,它运行良好,因此我必须在代码中错误地更改了某些内容。任何人都可以帮我找出导致此问题的代码中的错误吗? 我想要以下配色方案:

   -Inf < value <= 0 -> white
   0 < value <=1 -> yellow
   1< value <=10 -> orange
   10< value <= 100 -> darkorange2
   100< value <= 1000 -> red
   1000 <value <= 10000 -> red3
   10000 < value <= 32000 -> red4

这是我的代码:

    #re-order the labels in the order of appearance in the data frame
    df$label <- factor(df$X1, as.character(df$X1))
    # make the cuts
    df$value1 <-cut(df$value,breaks=c(Inf,0,1,10,100,1000,10000,32000),right = T)
    ggplot(data =  df, aes(x = label, y = X2)) + geom_tile(aes(fill=value1), colour= "black") + scale_fill_manual(breaks=c("(-Inf,0]", "(0,1]", "(1,10]", "(10,100]", "(100,1000]", "(1000,10000]", "(10000,32000]"),values =c("white","yellow","orange","darkorange2","red","red3","red4"))

这是我的数据预览(实际数据有 228 行,其中包含 6 个不同实验中 38 个 ID 的每百万读取值):

    head(df)
                 X1      X2      value                                label      value1
      1 merged_read_17785-997_aka_156_aka_21 RPM.MT1  91.783028 merged_read_17785-997_aka_156_aka_21    (10,100]
      2 merged_read_133362-79_aka_156_aka_21 RPM.MT1   6.403467 merged_read_133362-79_aka_156_aka_21      (1,10]
      3 merged_read_147828-69_aka_156_aka_20 RPM.MT1   4.268978 merged_read_147828-69_aka_156_aka_20      (1,10]
      4 merged_read_162443-60_aka_156_aka_21 RPM.MT1   0.000000 merged_read_162443-60_aka_156_aka_21    (-Inf,0]
      5 merged_read_262156-32_aka_156_aka_21 RPM.MT1   5.691971 merged_read_262156-32_aka_156_aka_21      (1,10]
      6 merged_read_22905-759_aka_159_aka_21 RPM.MT1 140.164780 merged_read_22905-759_aka_159_aka_21 (100,1e+03]

这是我从上述数据中得到的图:

【问题讨论】:

    标签: r ggplot2 heatmap


    【解决方案1】:

    我想我明白了,如果我从 scale_fill_manual 中取出 break 参数,那么所有图例都会显示:

     ggplot(data =  df, aes(x = label, y = X2)) + geom_tile(aes(fill=value1), colour= "black") + scale_fill_manual(values =c("white","yellow","orange","darkorange2","red","red3","red4")) 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-02
      • 2017-02-09
      • 2023-01-18
      • 1970-01-01
      • 2020-02-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多