Hackeando o R: criando temas no ggplot2

Quando o assunto é visualização de dados no R, é quase impossível não se lembrar do {ggplot2}. O pacote  se tornou quase que padrão na comunidade, e isso não foi ao acaso, de fato ele realmente é um dos melhores no sentido de criar gráficos seja de quaisquer tipos, sendo simples e flexível. No Hackeando o R de hoje ensinaremos alguns pontos básicos sobre como personalizar seu próprio tema com o {ggplot2}.

Antes de tudo, é importante saber alguns conceitos do pacote. Para sua utilização, é necessário especificar na função ggplot() o  data frame que irá ser utilizado, e também mapear os eixos x e y com a função aes(), de acordo com as colunas do conjunto de dados.

library(ggplot2)
ggplot(economics, aes(x = date, y = pce))

Porém, somente essa parte da função não é suficiente, portanto,  ele se divide em "subfunções", cada qual com seu respectivo propósito para a construção dos gráficos. São eles:

  • layer: coleção de elementos geométricos que formam os desenhos dos gráficos, são conhecidos pelas funções que iniciam com geom_ ou stats_.
  • scale: funciona como forma de alterar as escalas do gráfico em consonância com o espaço mapeado pelos valores que são inseridos.  Iniciam com scale_
  • coord: descreve como os dados coordenando se inserem no plano do gráfico, por padrão segue o cartesiano, no qual os valores de x e y se combinam. Iniciam com coord_
  • facet:  utilizada para criar diversos gráficos com base em diferentes categorias do dataset. Iniciam com facet_
  • theme: controla as cores, fontes, linhas e entre outros. Em suma, toda a parte visual do gráfico e que não faz parte dos dados. São criados com a função theme().

Dito isto, focaremos na estrutura da montagem de temas com o theme, que se separam em três subclasses: text, line e rectangle, cada uma com o proposito de alterar os elementos visuais do gráfico. Para cada subclasse existe um argumento específico de mudança e uma função padrão em que é utilizado para mudar as cores, fontes, tamanhos e entre outros. Vamos ver detalhadamente para cada tipo.

A primeira é o text, que controla toda a parte de texto do gráfico. Dentro da função themes(), é possível mudar desde todos os textos do gráfico com o argumento text =, e também é possível ser mais especificar, por exemplo, utilizando o argumento title =, em que é mudado apenas o texto do título.

Para realizar as mudanças, é necessário que após especificar o argumento do texto, para realizar as mudanças, é necessário utilizar a função element_text(). Exemplo:

ggplot(economics, aes(x = date, y = pce))+
geom_line(size = .8, colour = "darkblue")+
theme(title = element_text(color = "blue"))

Vemos a mudança no título do texto. Abaixo, segue os possíveis argumentos que podem ser utilizados para realizar as mudanças.

theme(
text,
 axis.title,
   axis.title.x,
      axis.title.x.top,
      axis.title.x.bottom,
    axis.title.y,
       axis.title.y.left,
       axis.title.y.right,
  title,
     legend.title,
     plot.title,
     plot.subtitle,
     plot.caption,
     plot.tag,
  axis.text,
   axis.text.x,
    axis.text.x.top,
    axis.text.x.bottom,
   axis.text.y,
    axis.text.y.left,
    axis.text.y.right,
legend.text,
strip.text,
   strip.text.x,
   strip.text.y)

O tipo line controla toda a parte de linhas dentro do plano do gráfico. Também é controlada a partir de argumentos próprios, com seus respectivos propósitos, além de possuir a sua própria função, chamada de element_line(). Exemplo:

ggplot(economics, aes(x = date, y = pce))+
geom_line(size = .8, colour = "darkblue")+
theme(axis.line = element_line(color = "blue"))

Abaixo, os argumentos próprios do tipo line.
theme(
line,
    axis.ticks,
      axis.ticks.x,
        axis.ticks.x.top,
        axis.ticks.x.bottom,
      axis.ticks.y,
       axis.ticks.y.left,
       axis.ticks.y.right,
    axis.line,
       axis.line.x,
         axis.line.x.top,
         axis.line.x.bottom,
       axis.line.y,
          axis.line.y.left,
          axis.line.y.right,
    panel.grid,
        panel.grid.major,
           panel.grid.major.x,
           panel.grid.major.y,
        panel.grid.minor,
           panel.grid.minor.x,
           panel.grid.minor.y)

Outro tipo é o rectangle, que altera toda a parte retangular dentro e fora do plano, além de alterar o retângulo que se encontra na legenda. Possui também seus próprios argumentos e sua função chamada element_rect(). Exemplo:

ggplot(economics, aes(x = date, y = pce))+
geom_line(size = .8, colour = "darkblue")+
theme(panel.background = element_rect(color = "blue"))
Abaixo, seguem os argumentos do tipo rect.
theme(
rect,
     legend.background,
     legend.key,
     legend.box.background,
     panel.background,
     panel.border,
     plot.background,
     strip.background,
        strip.background.x,
        strip.background.y)
Por fim, temos a função element_blank(), que pode ser utilizada pelos argumentos de todos os tipos com o propósito de "apagar" os elementos de interesse.
ggplot(economics, aes(x = date, y = pce))+
geom_line(size = .8, colour = "darkblue")+
theme(text = element_blank(),
line = element_blank(),
rect = element_blank())

É possível que seja criado um tema padrão, que pode ser salvo dentro de um objeto com a finalidade de ser reutilizado de forma rápida ao longo do código.

theme_economics <- theme(text = element_text(family = "sans", size = 14),
rect = element_blank(),
panel.grid = element_blank(),
title = element_text(color = "darkblue"),
axis.line = element_line(color = "black"))
Por fim, reutilizamos
ggplot(economics, aes(x = date, y = pce))+
geom_line(size = .8, colour = "darkblue")+
theme_economics

Viu como é fácil criar o próprio tema e sempre poder reutilizado? Caso queira se aprofundar em visualização de dados no R utilizando o pacote {ggplot2}, veja nosso Curso de gráficos com ggplot2.

Compartilhe esse artigo

Facebook
Twitter
LinkedIn
WhatsApp
Telegram
Email
Print

Comente o que achou desse artigo

Outros artigos relacionados

Como selecionar variáveis para modelos de previsão no Python?

Em oposição à crença popular, grande parte dos modelos de machine learning não produzem previsões magicamente. É papel do cientista de dados executar uma boa engenharia de variáveis para não cair no clássico problema de “garbage in, garbage out” (GIGO) em aprendizado de máquina. Neste sentido, aprender a fazer uma boa seleção de variáveis é fundamental e neste artigo exploramos algumas possibilidades práticas usando o Python.

Resultado IPCA-15 - Novembro/2024

A Análise Macro apresenta os resultados do IPCA-15 de Novembro de 2024, com gráficos elaborados em Python para coleta, tratamento e visualização de dados. Todo o conteúdo, disponível exclusivamente no Clube AM, foi desenvolvido com base nos métodos ensinados nos cursos da Análise Macro, permitindo aos assinantes acesso aos códigos e replicação das análises.

Resultado PNADc Trimestral - 3° Trimestre/2024

A Análise Macro apresenta os resultados da PNADc Trimestral do 3º trimestre de 2024, com gráficos elaborados em Python para coleta, tratamento e visualização de dados. Todo o conteúdo, disponível exclusivamente no Clube AM, foi desenvolvido com base nos métodos ensinados nos cursos da Análise Macro, permitindo aos assinantes acesso aos códigos e replicação das análises.

Boletim AM

Receba diretamente em seu e-mail gratuitamente nossas promoções especiais e conteúdos exclusivos sobre Análise de Dados!

Boletim AM

Receba diretamente em seu e-mail gratuitamente nossas promoções especiais e conteúdos exclusivos sobre Análise de Dados!

como podemos ajudar?

Preencha os seus dados abaixo e fale conosco no WhatsApp

Boletim AM

Preencha o formulário abaixo para receber nossos boletins semanais diretamente em seu e-mail.