Преобразуйте цветовую шкалу в преобразованное по вероятности распределение цвета с помощью scale_fill_gradientn ()

Я пытаюсь визуализировать сильно замкнутые растровые данные, и я хотел бы, чтобы нелинейное отображение цветов соответствовало диапазону значений. Есть пара похожих вопросов, но они не решают мою конкретную проблему (см. Ссылки ниже).

library(ggplot2)
library(scales)

set.seed(42)
dat <- data.frame(
   x = floor(runif(10000, min=1, max=100)),
   y = floor(runif(10000, min=2, max=1000)),
   z = rlnorm(10000, 1, 1) )

# colors for the colour scale:   
col.pal <- colorRampPalette(c("#00007F", "blue", "#007FFF", "cyan", "#7FFF7F", "yellow", "#FF7F00", "red", "#7F0000"))
fill.colors <- col.pal(64)

Вот как выглядят данные, если не преобразованы каким-либо образом:

ggplot(dat, aes(x = x, y = y, fill = z)) +
   geom_tile(width=2, height=30) +
   scale_fill_gradientn(colours=fill.colors) 

Мой вопрос является своего рода последующим вопросом, связанным сэтот&nbsp;или жеэтот&nbsp;и решение даноВот&nbsp;на самом деле дает именно тот сюжет, который я хочу, за исключением легенды:

qn <- rescale(quantile(dat$z, probs=seq(0, 1, length.out=length(fill.colors))))
ggplot(dat, aes(x = x, y = y, fill = z)) + 
   geom_tile(width=2, height=30) +
   scale_fill_gradientn(colours=fill.colors, values = qn)

Теперь я хочу, чтобы цветовая шкала в легенде представляла нелинейное распределение значений (теперь видна только красная часть шкалы), то есть легенда должна также основываться на квантилях. Есть ли способ сделать это?

Я думалtrans&nbsp;Аргумент в пределах цветовой шкалы может помочь, как и предполагалосьВот&nbsp;, но это выдает ошибку, я думаю, потому чтоqnorm(pnorm(dat$z))&nbsp;приводит к некоторым бесконечным значениям (хотя я не совсем понимаю функцию ...).

norm_trans <- function(){
   trans_new('norm', function(x) pnorm(x), function(x) qnorm(x)) 
}
ggplot(dat, aes(x = x, y = y, fill = z)) + 
   geom_tile(width=2, height=30) +
   scale_fill_gradientn(colours=fill.colors, trans = 'norm')
> Error in seq.default(from = best$lmin, to = best$lmax, by = best$lstep) : 'from' must be of length 1

Итак, кто-нибудь знает, как получить квантильное распределение цвета на графикеа также&nbsp;в легенде?