Преобразуйте цветовую гамму, но сохраняйте хорошую легенду с ggplot2

Я видел несколько схожих вопросов с этим, но я хотел бы задать свой конкретный вопрос настолько прямо, насколько смогу:

У меня есть точечная диаграмма с "z" Переменная закодирована в цветовую шкалу:

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)

Который производит это:bad version

Как вы можете видеть, так как & quot; z & quot; переменная обычно распределена, очень немногие из точек окрашены с помощью «крайнего»; цвета раздачи. Это так и должно быть, но мне интересно подчеркнуть разницу. Один из способов сделать это будет использовать:

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

Который производит это:better version

Применяя rank () к & quot; z & quot; переменная, я получаю гораздо больший акцент на незначительные различия в пределах & quot; z & quot; переменная. Можно представить себе использование здесь любого преобразования вместо ранга, но вы поняли идею.

Мой вопрос, по сути, каков самый простой способ или самый «верный ggplot2»? Кстати, получить легенду в исходных единицах (единицах z, в отличие от ранга z), сохранив при этом преобразованную версию цветных точек?

У меня есть ощущение, что это как-то использует rescaler (), но мне не ясно, как использовать rescaler () с произвольными преобразованиями и т. Д. В целом, более полезные примеры были бы полезны.

Спасибо заранее за ваше время.

Ответы на вопрос(1)

Ваш ответ на вопрос