我有一个输入文件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)
这就是我得到的情节:
我需要:
NA
个值,而不是将其保留为灰色空白; 有什么帮助或建议吗?
答案 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")
说明:
x = V1, y = V2
是在两个geom层之间共享的常见美学映射。将其保留在ggplot()
中,以避免为每个图层键入内容。fill = V3
仅用于geom_tile()
。将其放置在主要位置,而不是主要位置,因为我们也不需要geom_text()
来继承它。geom_text()
的数据集。 data = .
是指从主ggplot()
继承的数据。 . %>% mutate(...)
使用dplyr包中的管道运算符和mutate函数将NA值转换为“ NA”。如果您喜欢其他标签,也可以使用。scale_fill_gradient()
允许您为刻度的两端设置不同的颜色,以及更改NA值的填充颜色。这是一个方便的lookup table for colour names recognised in R。