显示 NA 值 + 更改颜色范围 | R 中的 ggplot2
Show NA values + change the color range | ggplot2 in R
我有一个输入文件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 代码,用于将此 table 绘制为热图:
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
值添加标签,而不是将它们留作灰色空白;
- 更改颜色范围而不是默认颜色范围。
有什么帮助或建议吗?
像下面这样的东西可以让你开始:
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
是两个几何层共享的通用美学映射。将它们保留在 ggplot()
中以避免为每一层打字。
fill = V3
只需要 geom_tile()
。把它放在那里而不是主要的,因为我们也不需要 geom_text()
来继承它。
- 我们希望 NA 值被解释为 "NA" 仅用于标签 ,因此我们修改传递给
geom_text()
的数据集。 data = .
指的是继承自主ggplot()
的数据。 . %>% mutate(...)
使用 dplyr 包中的管道运算符和变异函数将 NA 值转换为 "NA"。如果您喜欢其他标签,也可以使用它。
scale_fill_gradient()
允许您为刻度的两端设置不同的颜色,以及更改 NA 值的填充颜色。这是一个方便的 lookup table for colour names recognised in R.
我有一个输入文件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 代码,用于将此 table 绘制为热图:
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
值添加标签,而不是将它们留作灰色空白; - 更改颜色范围而不是默认颜色范围。
有什么帮助或建议吗?
像下面这样的东西可以让你开始:
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
是两个几何层共享的通用美学映射。将它们保留在ggplot()
中以避免为每一层打字。fill = V3
只需要geom_tile()
。把它放在那里而不是主要的,因为我们也不需要geom_text()
来继承它。- 我们希望 NA 值被解释为 "NA" 仅用于标签 ,因此我们修改传递给
geom_text()
的数据集。data = .
指的是继承自主ggplot()
的数据。. %>% mutate(...)
使用 dplyr 包中的管道运算符和变异函数将 NA 值转换为 "NA"。如果您喜欢其他标签,也可以使用它。 scale_fill_gradient()
允许您为刻度的两端设置不同的颜色,以及更改 NA 值的填充颜色。这是一个方便的 lookup table for colour names recognised in R.