问题描述
如果满足特定条件(例如 z > 1),我想显示颜色,否则显示无色。 你能告诉我怎么做吗?
xp <- c('disease_1','disease_2','disease_3','disease_4')
xp1 <- xp[1:2]
yp <- c('bcell','TCell')
df <- list(x=1:2,y=1:4,xp1,yp)
df <- expand.grid(df)
df$z <- c(1.804344554,1.158037086,1.686173307,0.500280283,1.710806067,0.857513435,0.66474755,1.164780941,1.769090931,2.058400169,3.114233859,1.436684123,1.770306398,0.995507604,2.538556363,2.264486118,1.424789875,1.816608927,2.773082903,1.197434618,0.829416784,1.622892741,2.035117094,1.650363345,1.927235048,1.546477438,2.308773122,1.041881013,1.216029616,0.478353441,0.834348006,1.240448774)
cols <- rev(brewer.pal(11,'RdYlBu'))
p <- ggplot(df)
p <- p + geom_tile(aes(x,y,fill = z),colour = "black",width=0.85,height=0.85,size=1)+ # define each rectangle (small tile) border (line and size and color)
facet_grid(Var3~Var4) +
theme(strip.background =element_blank(),#remove bg color of facet_grid texts
strip.text.x = element_text(size=12,color="black",face="bold"),# font of upper texts
strip.text.y = element_text(size=10,face="bold")) # font of right texts
解决方法
要在不满足条件的情况下使图块无色,请在 NA
语句中分配 ifelse
,并在 "white"
中分配颜色 scale_fill_continuous
。
library(ggplot2)
library(RColorBrewer)
cols <- rev(brewer.pal(11,'RdYlBu'))
df
p <- ggplot(df)
p <- p + geom_tile(aes(x,y,fill = ifelse(z > 1,z,NA)),colour = "black",width=0.85,height=0.85,size=1)+ # define each rectangle (small tile) border (line and size and color)
scale_fill_continuous(name = "z Scale",na.value = 'white') +
labs() +
facet_grid(Var3 ~ Var4) +
theme(strip.background =element_blank(),#remove bg color of facet_grid texts
strip.text.x = element_text(size=12,color="black",face="bold"),# font of upper texts
strip.text.y = element_text(size=10,face="bold")) # font of right texts
p