Quem nunca tentou criar um gráfico e ficou com diversos pontos sobrepostos, dificultando a sua visualização?
library(tidyverse)
theme_set(theme_bw())
library(palmerpenguins)
ggplot(penguins, aes(x = flipper_length_mm, y = body_mass_g, colour = species)) +
geom_point(size = 5) +
labs(x = "Comprimento da Nadadeira (mm)", y = "Massa Corporal (g)", title = "Pinguins na Estação Palmer", colour = "Espécie") +
scale_colour_viridis_d()
A minha abordagem em casos assim sempre foi adicionar transparência aos pontos, com o parâmetro alpha
e algum nível adequado a cada visualização em particular:
ggplot(penguins, aes(x = flipper_length_mm, y = body_mass_g, colour = species)) +
geom_point(size = 5, alpha = 0.5) +
labs(x = "Comprimento da Nadadeira (mm)", y = "Massa Corporal (g)", title = "Pinguins na Estação Palmer", colour = "Espécie") +
scale_colour_viridis_d()
Mas essa opção sempre me deixou insatisfeito, pois as cores originais ficam mais fracas, como se estivessem desbotadas. Logicamente, isso faz sentido, pois é o que alpha
está fazendo por definição, mas eu sempre achei que deveria haver uma opção melhor.
Mas o pacote ggblend
resolve facilmente esse problema. Perceba como não há esmaecimento das cores originais e, ainda assim, é possível perceber a sobreposição dos pontos e onde elas ocorrem:
library(ggblend)
ggplot(penguins, aes(x = flipper_length_mm, y = body_mass_g, colour = species)) +
geom_point(size = 5) |>
blend("multiply") +
labs(x = "Comprimento da Nadadeira (mm)", y = "Massa Corporal (g)", title = "Pinguins na Estação Palmer", colour = "Espécie") +
scale_colour_viridis_d()
Técnicas mais sofisticadas podem ser encontradas no site do ggblend.