【问题标题】:Show NA values + change the color range | ggplot2 in R显示 NA 值 + 更改颜色范围 | R中的ggplot2
【发布时间】:2019-01-25 10:02:34
【问题描述】:

我有一个输入文件file1.txt:

rs113565588 SIFT    0.306
rs113565588 Polyphen2   0
rs113565588 MutationAssessor    0.345
rs61729896  SIFT    NA
rs61729896  Polyphen2   NA
rs61729896  MutationAssessor    NA
rs61755283  SIFT    NA
rs61755283  Polyphen2   NA
rs61755283  MutationAssessor    NA
rs777439738 SIFT    NA
rs777439738 Polyphen2   NA
rs777439738 MutationAssessor    NA

这是我将这张表绘制为热图的 R 代码:

library(ggplot2)
mydata <- read.table("file1.txt", header=FALSE, 
                     sep="\t")

ggplot(data = mydata, aes(x=V1, y=V2, fill=V3)) + 
  geom_tile() + 
  geom_text(aes(V1, V2, label = V3), color = "black", size = 4)

这是我得到的情节:

我需要:

  1. 同时标记NA 值,而不是将它们保留为灰色空白;
  2. 更改颜色范围而不是这个默认值。

有什么帮助或建议吗?

【问题讨论】:

  • 请参阅ggplot2.tidyverse.org/reference 了解 scale_color_* 几何图形以调整颜色。您究竟想如何呈现 NA 值?
  • 作为数字,一个灰色的正方形里面写着NA。 @RomanLuštrik
  • 我会为这些值添加annotation

标签: r ggplot2 colors grid heatmap


【解决方案1】:

以下内容可以帮助您入门:

library(dplyr)

ggplot(data = mydata, aes(x = V1, y = V2)) + 
  geom_tile(aes(fill = V3)) + 
  geom_text(data = . %>% mutate(V3 = ifelse(is.na(V3), "NA", as.character(V3))),
            aes(label = V3), 
            color = "black", size = 4) +
  scale_fill_gradient(low = "gold", high = "firebrick4", na.value = "grey")

解释:

  1. x = V1, y = V2 是两个几何层共享的常见美学映射。将它们保留在 ggplot() 中以避免为每一层输入。
  2. 只有geom_tile() 需要fill = V3。把它放在那里而不是主要的,因为我们也不需要geom_text() 来继承它。
  3. 我们希望将 NA 值解释为“NA”仅用于标签,因此我们修改传递给 geom_text() 的数据集。 data = . 指的是继承自主ggplot() 的数据。 . %&gt;% mutate(...) 使用 dplyr 包中的管道运算符 & mutate 函数将 NA 值转换为“NA”。如果您更喜欢其他标签,也可以使用它。
  4. scale_fill_gradient() 允许您为刻度的两端设置不同的颜色,以及更改 NA 值的填充颜色。这是一个方便的lookup table for colour names recognised in R

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-23
    • 2012-06-14
    • 1970-01-01
    • 2011-08-15
    • 2021-04-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多