geom_tile单色为0,然后是色标

时间:2017-02-03 18:21:00

标签: r ggplot2 heatmap

我想制作一张热图,其中颜色托盘为绿色到红色,但0的值为白色。我开始使用geom_tile heatmap with different high fill colours based on factor和其他人,但是不能得到我需要的东西。例如,使用以下数据库:

df <- data.frame(expand.grid(1:10,1:10))
df$z <- sample(0:10, nrow(df), replace=T)

我可以创建这个情节:

ggplot(df,aes(x = Var1,y = Var2,fill = z)) + 
  geom_tile() + 
  scale_fill_gradient(low = "green", high = "red")

enter image description here 但我希望等于零的值为白色。所以这可以解决问题:

ggplot(df,aes(x = Var1,y = Var2,fill = z)) + 
  geom_tile() + 
  scale_fill_gradient(low="green", high="red", limits=c(1, 10))

enter image description here

这是白色的0,但我失去了绿色到红色:

ggplot(df,aes(x = Var1,y = Var2,fill = z)) + 
  geom_tile() + 
  scale_fill_gradient(low = "white", high = "red")

enter image description here

我根本不能使用啤酒杯(尽管我认为我根据错误遗漏了一些简单的东西)。

ggplot(df,aes(x = Var1,y = Var2,fill = z)) + 
  geom_tile() + 
  scale_fill_brewer("Greens")

错误:提供给离散比例的连续值

我应该用NA替换0吗?任何帮助,将不胜感激。

1 个答案:

答案 0 :(得分:11)

您可以使用scale_fill_gradientn()

ggplot(df,aes(x = Var1,y = Var2, fill = z)) + 
  geom_tile() + 
  scale_fill_gradientn(colours = c("white", "green", "red"), values = c(0,0.1,1))

enter image description here