R adicionando legenda e etiquetas diretas ao gráfico de contorno ggplot2

Eu tenho um mapa raster que eu quero plotar usando ggplot2 usando uma escala contínua e isolines rotulados em cima disso.

Por isso, estou usando o pacote directlabels e estou perto de conseguir o que quero, mas não consigo obter a legenda e os isolines rotulados no mesmo mapa

O código a seguir reproduz meu problema:

install.packages(c('ggplot2', 'directlabels'))
library('ggplot2')
library('directlabels')
df <- expand.grid(x=1:100, y=1:100)
df$z <- df$x * df$y

# Plot 1: this plot is fine but without contours    
p <- ggplot(aes(x=x, y=y, z=z), data = df) + 
     geom_raster(data=df, aes(fill=z)) +
     scale_fill_gradient(limits=range(df$z), high = 'white', low = 'red')
p

# Plot 2: This plot adds the isolines but no labels and it also adds a second legend for level which I don't want
p <- p + geom_contour(aes(colour = ..level..), color='gray30', na.rm=T,     show.legend=T)
p

# Plot 3: This plot has the labeled isolines but it removes the z legend that I want to show
direct.label(p, list("bottom.pieces", colour='black'))

Gráfico 1

Gráfico 2

Gráfico 3

Eu gostaria de ter a varredura colorida em segundo plano, com sua legenda de cores ao lado e as isolinhas rotuladas na parte superior. Existe uma maneira de fazer isso?

Também existe uma maneira de colocar os rótulos no meio das isolinhas, em vez da parte inferior ou superior?

desde já, obrigado

Pablo

questionAnswers(1)

yourAnswerToTheQuestion