Considere o histograma de densidade da depth
variável dos diamonds
dados.
dat0 <- ggplot2::diamonds %>% select(depth)
gg0 <- ggplot(dat0, aes(x = depth)) +
scale_x_continuous(limits = c(30, 90), expand = c(0,0), breaks = seq(30,90,10)) +
scale_y_continuous(limits = c(0, 20000), expand = c(0,0), trans = modulus_trans(0.3)) +
geom_histogram(bins = 100)
Usando scales::modulus_trans()
, é fácil transformar o eixo x para estreitar a escala para a esquerda (gg1) ou para a direita (gg2).
gg1 <- ggplot(dat0, aes(x = depth)) +
scale_x_continuous(limits = c(30, 90), expand = c(0,0), breaks = seq(30,90,10),
trans = modulus_trans(2.8)) +
scale_y_continuous(limits = c(0, 20000), expand = c(0,0), trans = modulus_trans(0.3)) +
geom_histogram(bins = 100)
gg2 <- ggplot(dat0, aes(x = depth)) +
scale_x_continuous(limits = c(30, 90), expand = c(0,0), breaks = seq(30,90,10),
trans = modulus_trans(-1)) +
scale_y_continuous(limits = c(0, 20000), expand = c(0,0), trans = modulus_trans(0.3)) +
geom_histogram(bins = 100)
Mas como transformar a escala x para apertar em ambos os lados do pico de densidade (localizado em, digamos, depth
= 62) enquanto mantém a possibilidade de ajustar p
(o expoente de transformação λ da modulus_trans()
função) idealmente de forma independente para cada lado? Talvez uma pergunta ingênua, mas seria possível modulus_trans()
combinar dois em uma função?trans_new()
Caso contrário, que outro tipo de transformação poderia ser usado para ampliar o pico de densidade mantendo-o em sua posição inicial?
Obrigado pela ajuda e conselho
Eu criaria uma transformação personalizada aqui que toma como argumento seu valor central e diminui suavemente o espaçamento conforme você se afasta desse valor usando exponenciação simples da diferença. Você pode controlar a força com um
strength
parâmetro também:Testando, com uma força de 1,5 obtemos
Ou com uma configuração mais suave,
strength = 1.2
obtemosObserve que especifiquei as quebras do histograma em todos os números inteiros entre 1 e 100; caso contrário, as posições dos compartimentos mudariam para intervalos fixos ao longo da nova escala, gerando efeitos estranhos em intensidades mais altas.