¿Cómo obtener una escala log10 invertida en ggplot2?

Me gustaría hacer un gráfico con una 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() 

Sin embargo, parece que puedoya sea una escala log10o una escala invertida:

p + scale_x_reverse() + scale_x_log10() 

p + scale_x_reverse()

Supongo que esto es lógico, si una capa solo puede tener una escala. Y, ciertamente, podría piratearlo haciendo la transformación del registro en el marco de datos,df$xLog <- log10(df$x) pero esa solución es contraria al espíritu de ggplot. ¿Hay alguna forma de obtener este tipo de gráfico sin hacer transformaciones de datos externas a la llamada ggplot?

Respuestas a la pregunta(1)

Su respuesta a la pregunta