显示NA值+更改颜色范围| R中的ggplot2

时间:2018-08-18 17:18:10

标签: r ggplot2 colors grid heatmap

我有一个输入文件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)

这就是我得到的情节:

enter image description here

我需要:

  1. 也标记NA个值,而不是将其保留为灰色空白;
  2. 更改颜色范围,而不是此默认范围。

有什么帮助或建议吗?

1 个答案:

答案 0 :(得分: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")

plot

说明:

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