Transforma la escala de color, pero mantén una bonita leyenda con ggplot2

He visto preguntas algo similares a esto, pero me gustaría hacer mi pregunta específica tan directamente como pueda:

Tengo un diagrama de dispersión con una variable "z" codificada en una escala de color:

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)

Lo que produce esto:

Como puede ver, dado que la variable "z" se distribuye normalmente, muy pocos de los puntos están coloreados con los colores "extremos" de la distribución. Esto es como debería ser, pero me interesa enfatizar la diferencia. Una forma de hacer esto sería usar:

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

Lo que produce esto:

Al aplicar el rango () a la variable "z", obtengo un mayor énfasis en las diferencias menores dentro de la variable "z". Uno podría imaginar usar cualquier transformación aquí, en lugar de rango, pero entiendes la idea.

Mi pregunta es, esencialmente, cuál es la forma más directa, o la forma más "verdadera de ggplot2", de obtener una leyenda en las unidades originales (unidades de z, en oposición al rango de z), mientras se mantiene la versión transformada de los puntos de color?

Tengo la sensación de que esto usa rescaler () de alguna manera, pero no me queda claro cómo usar el reescalador () con transformaciones arbitrarias, etc. En general, serían útiles ejemplos más claros.

Gracias de antemano por tu tiempo.

Respuestas a la pregunta(1)

Su respuesta a la pregunta