geom_tile única cor como 0 e escala de cores

Quero produzir um mapa de calor em que, com um palete de cores de verde a vermelho, mas os valores de 0 estejam em branco. Eu comecei commapa de calor geom_tile com diferentes cores de alto preenchimento com base no fator e outros no SO, mas não conseguem o que eu preciso. Por exemplo, com o seguinte banco de dados:

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

Eu posso criar esse gráfico:

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

Mas quero que os valores iguais a zero sejam brancos. Portanto, isso acontece em parte:

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

E isso fica 0 como branco, mas eu perco o verde para o vermelho:

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

E não consigo usar escalas de cervejeiro (embora eu ache que estou perdendo algo simples com base no erro).

ggplot(df,aes(x = Var1,y = Var2,fill = z)) + 
  geom_tile() + 
  scale_fill_brewer("Greens")
Erro: Valor contínuo fornecido em escala discreta

Devo apenas substituir 0 por NA? Qualquer ajuda seria apreciada.

questionAnswers(1)

yourAnswerToTheQuestion