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.