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.

1
2
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:

1
2
3
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.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
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:

1
2
3
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.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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:

1
2
3
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.
1
2
3
4
5
6
7
8
9
10
11
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.
1
2
3
4
5
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.

1
2
3
4
5
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
1
2
3
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 Criar um Agente Analista Financeiro com LangGraph e Dados da CVM

Este post apresenta a construção de um sistema multiagente para análise financeira automatizada com LangGraph. A partir dos dados das demonstrações contábeis da CVM, mostramos como agentes especializados podem interpretar perguntas, consultar bancos de dados e gerar análises financeiras, simulando o trabalho de um analista.

O que é e como funcionam Sistemas Multi-Agentes

Sistemas multi-agentes (MAS) representam uma nova forma de estruturar aplicações de inteligência artificial, especialmente úteis para lidar com problemas complexos e distribuídos. Em vez de depender de um único agente generalista, esses sistemas são compostos por múltiplos agentes especializados que colaboram, competem ou se coordenam para executar tarefas específicas. Neste post, explicamos o que são os MAS, seus principais componentes (como LLMs, ferramentas e processos) e as arquiteturas mais comuns.

Como criar um Agente de IA coletor de dados

A tecnologia de agentes de IA está democratizando o acesso e a manipulação de dados econômicos complexos, tornando-a acessível mesmo para aqueles sem experiência em programação. Neste post discutimos a criação de agentes de IA para coletar dados econômicos brasileiros usando linguagem natural, como "Qual é a expectativa do IPCA para 2025?".

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!