Estou tentando usar o tidyterra scale_*_whitebox_b()
para agrupar valores contínuos usando quebras personalizadas que são distribuídas de forma desigual, para enfatizar a diferença nos valores baixos. Estou tendo problemas porque a escala agrupada redimensiona automaticamente a paleta de cores para corresponder ao tamanho das minhas quebras, o que significa que os valores baixos na parte inferior do intervalo são coloridos de forma semelhante e difíceis de distinguir.
library(ggplot2)
library(terra)
library(tidyterra)
#sample data, with some sparse high values
r <- rast(nrows=10, ncols=10)
values(r) <- abs(rnorm(100))
r[17] <- 12
r[22] <- 17
r[72] <- 7
breaks=c(0, 0.25, 0.5, 1, 2, 5, 10, 20)
ggplot() +
geom_spatraster(data=r) +
scale_fill_whitebox_b("viridi",
breaks=breaks, direction=-1)
A documentação para scale_fill_whitebox_b()
aponta para os construtores de escala de binning ggplot subjacentes , que tem um argumento rescaler, mas não consigo descobrir como chamá-lo para scale_fill_whitebox. Com ggplot scale_fill_steps, você pode fazer isso usando values e limits :
ggplot(r) +
geom_raster(aes(x=x, y=y, fill=lyr.1)) +
scale_fill_stepsn(colors=terrain.colors(7),
breaks=breaks,
values = scales::rescale(breaks),
limits = range(breaks))
Mas scale_fill_whitebox
não aceita "values"
argumentos, e não tive sorte em brincar com o argumento do rescaler.
Gostaria de replicar as cores que obtenho quando uso os mesmos parâmetros com um gráfico de contorno; aqui, a paleta de cores é distribuída uniformemente entre os intervalos especificados.
ggplot() +
geom_spatraster_contour_filled(data=r, breaks=breaks) +
scale_fill_whitebox_d("viridi", direction=-1)
Em vez de usar
scale_fill_whitebox_xxx
uma opção seria usarscale_fill_stepsn
com o seu desejadowhitebox.colors
. Além disso, observe que eu uso omidpoints
dos bins emvalues=
para obter as cores adequadas, conforme explicado em Especificar quebras assimétricas emscale_fill_stepsn()
: