Introdução Link para o cabeçalho
Recentemente, respondi a pergunta “Como alterar a escala de cores em um gráfico no R” no Stack Overflow em Português. Achei que a resposta ficou bem completa, então resolvi transpô-la para cá.
Há duas maneiras principais de definir uma escala de cores usando ggplot2
. Uma delas é manual e outra é utilizando uma paleta de cores pré-definida.
Definindo cores manualmente Link para o cabeçalho
Cada cor deve ser definida manualmente. Essa definição pode ser feita via código (RGB ou hexadecimal) das cores ou pelo seu nome em inglês. A definição via código permite uma variação maior de cores, pois nem todas elas possuem nomes definidos. Se a definição for feita via nome de cores, estes nomes devem estar em inglês. Abaixo eu criei uma escala de cores, que não é necessariamente bonita ou harmoniosa, que permite ver isso em detalhes:
# devtools::install_github("allisonhorst/palmerpenguins")
library(palmerpenguins)
library(ggplot2)
theme_set(theme_bw())
ggplot(penguins, aes(x = flipper_length_mm, y = body_mass_g, colour = species)) +
geom_point() +
scale_colour_manual(values = c("orange", "seagreen3", "cyan")) +
labs(x = "Comprimento da Nadadeira (mm)", y = "Massa Corporal (g)", title = "Pinguins na Estação Palmer", colour = "Espécie")
O R já vem com 657 cores pré-definidas em sua instalação. Seus nomes podem ser consultados através da função colors()
.
Definindo cores através de paletas Link para o cabeçalho
Basta usar a função scale_colour_brewer
para definir uma paleta de cores para o seu gráfico. No exemplo abaixo estou utilizando a paleta Dark2
:
ggplot(penguins, aes(x = flipper_length_mm, y = body_mass_g, colour = species)) +
geom_point() +
labs(x = "Comprimento da Nadadeira (mm)", y = "Massa Corporal (g)", title = "Pinguins na Estação Palmer", colour = "Espécie") +
scale_colour_brewer(palette = "Dark2")
Entre no help da função scale_colour_brewer
para ver quais são as paletas de cores disponíveis no ggplot2
.
Entretanto, de uns anos pra cá, eu tenho usado uma outra paleta de cores para os meus gráficos. Ela se chama viridis e suas cores são facilmente distinguíveis por daltônicos. Como sou professor, tenho a preocupação de que meus gráficos sejam mais inclusivos e, com ela, meus alunos conseguem diferenciar o que aparece nos gráficos. Além disso, essa escala funciona muito bem em impressões em preto e branco, ao contrário de algumas outras opções de paletas.
ggplot(penguins, aes(x = flipper_length_mm, y = body_mass_g, colour = species)) +
geom_point() +
labs(x = "Comprimento da Nadadeira (mm)", y = "Massa Corporal (g)", title = "Pinguins na Estação Palmer", colour = "Espécie") +
scale_fill_viridis_d()
Paletas não-oficiais Link para o cabeçalho
Por fim, há paletas de cores não-oficiais, feitas por usuários do R que tem mais noção de teoria de cor do que eu. Uma opção que gosto muito é baseada nas paletas de cores dos filmes do cineasta Wes Anderson e pode ser baixada [aqui][4]. Sua utilização também é simples e combina os dois métodos vistos anteriormente:
library(wesanderson)
ggplot(penguins, aes(x = flipper_length_mm, y = body_mass_g, colour = species)) +
geom_point() +
labs(x = "Comprimento da Nadadeira (mm)", y = "Massa Corporal (g)", title = "Pinguins na Estação Palmer", colour = "Espécie") +
scale_colour_manual(values = wes_palette("Zissou1"))
Acima criei um gráfico de barras baseado nas cores de [A Vida Marinha com Steve Zissou][6], um dos meus filmes preferidos.
Observação: tudo o que foi dito acima para cores de pontos e linhas (colour
) pode ser transposto para preenchimentos (fill
). Ou seja, basta substituir scale_colour_brewer
por scale_fill_brewer
em um gráfico de colunas para obter um resultado análogo.