在热图中更改NA的默认值

时间:2015-02-19 20:51:23

标签: r heatmap

要绘制以下输入文件的热图,下面的代码可以正常工作并生成下面的图像

"people","1","2","3","4","5","6","7","8","9"
"Ej1",0,0,0,1,0,1,1,NA,0
"Ej2",0,1,1,0,0,0,1,NA,0
"Ej3",0,1,1,1,0,0,0,NA,1
"Ej4",0,NA,0,0,NA,1,0,NA,1
"Ej5",1,0,1,1,0,1,1,NA,1
"Ej6",1,1,0,1,1,1,0,NA,0
"Ej7",0,1,1,0,0,0,0,NA,1
"Ej8",0,0,1,1,1,1,1,NA,0
"Ej9",1,1,0,0,1,0,0,NA,NA




library(reshape2)
library(ggplot2)
library(scales)
library(plyr)
data <- read.csv("fruits2.txt", head=TRUE, sep=",")
data$people <- factor(data$people,levels=rev(data$people))
data.m = melt(data,id='people')
data.m[,"rescale"]<-rescale(data.m[,"value"],to=c(0,1))
fewer.labels <- c("Ej9","Ej8","Ej7","Ej6","Ej5","Ej4","Ej3","Ej2","Ej1")
p <- ggplot(data.m, aes(variable, people)) +
     geom_tile(aes(fill = rescale), colour = "white") +
     scale_y_discrete(labels=fewer.labels) +
     scale_fill_gradient(low = "red", high = "green") +
     theme(axis.text=element_text(size=8))

现在我正在尝试用其他颜色更改NA值的灰色,例如黄色,无法找到设置位置。enter image description here

1 个答案:

答案 0 :(得分:4)

scale_fill_gradient支持na.value参数,该参数指定用于NA值的颜色(正是您想要的颜色)。所以只需将该行更改为:

scale_fill_gradient(low = "red", high = "green", na.value="yellow")