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 automatizar o tratamento de dados feito no Excel usando o Python?

Segundo a pesquisa “State of Data Science”, profissionais de dados gastam 3 horas/dia (38% do tempo) apenas preparando os dados, antes mesmo de analisá-los. Neste artigo advogamos que este gasto de tempo pode ser drasticamente reduzido ao utilizar ferramentas open source, como Pandas e Python, para automatizar tarefas repetitivas que costumam ser feitas em Excel.

A gramática dos gráficos: como deixar de criar gráficos no Excel e usar o plotnine no Python

A etapa de visualização de dados refere-se a uma parte fundamental da análise de dados, pois permite não somente compreender os dados que estamos analisando, mas como também é uma ferramenta útil para explanar os resultados encontrados. Mas qual a forma mais fácil de construir um gráfico, como podemos melhorar a produtividade nesta tarefa? É onde podemos aplicar a gramática dos gráficos e construir com a biblioteca plotnine no Python.

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.