Preciso do ggplot scale_x_log10 () para fornecer números negativos e positivos como saída

Eu gero aqui um histograma fino com números positivos e negativos.

x <- rnorm(5000,0,1000)
library(ggplot2)
df <- data.frame(x)
ggplot(df, aes(x = x)) + geom_histogram()

O que eu quero é ter um eixo x registrado. Quando faço isso apenas para números positivos com scale_x_log10 (), funciona como um encanto. Mas aqui isso não acontece e ele remove meus números negativos e os adiciona aos números positivos.

ggplot(df, aes(x = x)) + geom_histogram() + scale_x_log10()

Tudo o que eu realmente quero é que os ticks e o espaçamento entre os ticks sigam o padrão de log e que ambos os lados de 0 no eixo x sejam imagens de espelho um do outro, mas não consigo entender isso.

questionAnswers(1)

yourAnswerToTheQuestion