Como obter uma escala log10 invertida em ggplot2?

Eu gostaria de fazer um gráfico com uma escala log10 x invertida usando ggplot2:

require(ggplot2)
df <- data.frame(x=1:10, y=runif(10))
p <- ggplot(data=df, aes(x=x, y=y)) + geom_point() 

No entanto, parece que eu possoou uma escala log10ou uma escala invertida:

p + scale_x_reverse() + scale_x_log10() 

p + scale_x_reverse()

Eu acho que isso é lógico, se uma camada só pode ter uma escala. E certamente eu poderia hackear fazendo a transformação log no dataframe,df$xLog <- log10(df$x) mas essa solução parece contrária ao espírito do ggplot. Existe uma maneira de obter esse tipo de plotagem sem fazer transformações de dados externas à chamada ggplot?

questionAnswers(1)

yourAnswerToTheQuestion