web-dev-qa-db-ja.com

geom_tile単色を0、次にカラースケール

緑から赤のカラーパレットでヒートマップを作成したいのですが、0の値は白です。私は 因子に基づいて異なる高塗りつぶし色のgeom_tileヒートマップ および他のSOで開始しましたが、必要なものを完全に得ることができません。たとえば、次のようにデータベース:

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")

エラー:離散値に供給される連続値

0をNAに置き換えるだけですか?任意の助けいただければ幸いです。

10
tjr

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

13
beetroot