Transforme a escala de cores, mas mantenha uma boa lenda com ggplot2

Eu já vi algumas perguntas semelhantes, mas gostaria de fazer a minha pergunta específica o mais diretamente possível:

Eu tenho um gráfico de dispersão com uma variável "z" codificada em uma escala de cores:

library(ggplot2)
myData <- data.frame(x = rnorm(1000),
                     y = rnorm(1000))
myData$z <- with(myData, x * y)

badVersion <- ggplot(myData,
              aes(x = x, y = y, colour = z))
badVersion <- badVersion + geom_point()
print(badVersion)

O que produz isso:

Como você pode ver, como a variável "z" é normalmente distribuída, muito poucos pontos são coloridos com as cores "extremas" da distribuição. É assim que deve ser, mas estou interessado em enfatizar a diferença. Uma maneira de fazer isso seria usar:

betterVersion <- ggplot(myData,
                        aes(x = x, y = y, colour = rank(z)))
betterVersion <- betterVersion + geom_point()
print(betterVersion)

O que produz isso:

Aplicando rank () à variável "z", tenho uma ênfase muito maior em pequenas diferenças dentro da variável "z". Pode-se imaginar usando qualquer transformação aqui, em vez de rank, mas você começa a idéia.

A minha pergunta é, essencialmente, qual é a maneira mais direta, ou a mais "verdadeira ggplot2", de obter uma legenda nas unidades originais (unidades de z, em oposição à posição de z), mantendo a versão transformada de os pontos coloridos?

Eu sinto que isso usa rescaler () de alguma forma, mas não está claro para mim como usar rescaler () com transformações arbitrárias, etc. Em geral, exemplos mais claros seriam úteis.

Agradeço antecipadamente pelo seu tempo.

questionAnswers(1)

yourAnswerToTheQuestion