Construindo gráficos no R

Autor

Marlenildo Melo

Data de Publicação

2 de setembro de 2025

Pacotes necessários

Construindo gráficos usando o pacote ggplot2

library(ggplot2) #Criar gráficos de vários tipos
library(dplyr) #Utilizar operadores pipes
library(rstatix) #Pacote para realizar estatística descritiva

Banco de dados

A elaboração dos gráficos neste trabalho será realizada utilizando o pacote ggplot2.

Para os exemplos apresentados, será utilizado o banco de dados dados, que contém as seguintes variáveis:

  • FMICO: fator relacionado à aplicação de fungo micorrízico (com ou sem inoculação);
  • LIRRIG: níveis de irrigação aplicados às plantas;
  • DAS: dias após a semeadura, utilizado como variável temporal para acompanhamento do desenvolvimento;
  • MAP: Massa aérea da parte aérea da planta (g ou kg, dependendo da unidade utilizada no experimento);
  • DPAP: desvio-padrão da massa aérea da planta, indicando a variabilidade da medida;
  • MDC: massa da parte da raiz ou do caule (dependendo da nomenclatura definida no experimento);
  • DPDC: desvio-padrão da massa da raiz ou caule;
  • MNF: massa seca de folhas (g ou kg);
  • DPNF: desvio-padrão da massa seca de folhas.

Esse banco de dados contém informações experimentais essenciais para avaliar o efeito de micorrizas e diferentes lâminas de irrigação sobre o crescimento e a produção vegetal ao longo do tempo.

Esse conjunto de informações possibilita tanto a construção de gráficos exploratórios (como boxplots e histogramas) quanto a representação de médias e grupos de comparação, atendendo às necessidades da análise estatística e da apresentação dos resultados.

Visualização do banco de dados

dados |> head()
  FMICO LIRRIG DAS    MAP      DPAP   MDC       DPDC  MNF      DPNF
1    F0     L4  10  8.175 0.6291529 1.650 0.05773503 4.25 0.5000000
2    F0     L4  10  9.000 1.4142136 1.650 0.23804761 4.50 0.5773503
3    F0     L4  10  9.075 0.2872281 1.550 0.12909945 4.00 0.0000000
4    F0     L4  30 17.300 1.0230673 3.850 0.05773503 8.75 0.5000000
5    F0     L4  30 17.400 1.3291601 3.725 0.05000000 8.75 0.5000000
6    F0     L4  30 19.000 3.2659863 3.925 0.34034296 9.25 0.9574271

Estrutura dos dados

str(dados)
'data.frame':   81 obs. of  9 variables:
 $ FMICO : Factor w/ 3 levels "F0","F1","F2": 1 1 1 1 1 1 1 1 1 1 ...
 $ LIRRIG: Factor w/ 3 levels "L4","L6","L8": 1 1 1 1 1 1 1 1 1 2 ...
 $ DAS   : Factor w/ 3 levels "10","30","50": 1 1 1 2 2 2 3 3 3 1 ...
 $ MAP   : num  8.18 9 9.07 17.3 17.4 ...
 $ DPAP  : num  0.629 1.414 0.287 1.023 1.329 ...
 $ MDC   : num  1.65 1.65 1.55 3.85 3.73 ...
 $ DPDC  : num  0.0577 0.238 0.1291 0.0577 0.05 ...
 $ MNF   : num  4.25 4.5 4 8.75 8.75 9.25 9.25 9.75 10 4.25 ...
 $ DPNF  : num  0.5 0.577 0 0.5 0.5 ...

Gráfico de boxplot

  • Variável dependente: MAP
  • Variáveis independentes: FMICO, LIRRIG, DAS

Modelo 1- Simples com duas variáveis

Massa aérea da parte aérea da planta (MAP) em função de níveis de irrigação aplicados às plantas (LIRIG).

dados |> 
  ggplot(aes(x= LIRRIG, y=MAP))+ #Escolhe que variáveis aparecem no eixo X, Y e grupo
  geom_boxplot()

Modelo 2 - Agrupado com três variáveis

Massa aérea da parte aérea da planta (MAP) em função de níveis de irrigação aplicados às plantas (LIRIG) separado por dias após a semeadura (DAS).

dados |> 
  ggplot(aes(x=LIRRIG, y=MAP))+ #Escolhe que variáveis aparecem no eixo X, Y e grupo
  geom_boxplot()+ #Seleciona tipo de gráfico de boxplot
  facet_grid(~DAS) # Agrupa gráfico por MICO

Podemos trocar e fazer o gráfico em função de DAS e separado por LIRRIG.

dados |> 
  ggplot(aes(x=DAS, y=MAP))+ #Escolhe que variáveis aparecem no eixo X, Y e grupo
  geom_boxplot()+ #Seleciona tipo de gráfico de boxplot
  facet_grid(~LIRRIG) # Agrupa gráfico por LRRIG


Modelo 3 agrupado com quatro variáveis

Massa aérea da parte aérea da planta (MAP) em função de níveis de irrigação aplicados às plantas (LIRIG) separado por dias após a semeadura (DAS) e agrupado por FMICO

dados |> 
  ggplot(aes(x=LIRRIG, y=MAP, fill=FMICO))+ #Escolhe que variáveis aparecem no eixo X, Y e grupo
  geom_boxplot()+ #Seleciona tipo de gráfico de boxplot
  facet_grid(~DAS)+ # Agrupa gráfico por DAS 
  theme_bw() #Estilo de gráfico


Alterando títulos dos eixos

Modelo 5

dados |> 
  ggplot(aes(x=LIRRIG, y=MAP, fill=FMICO))+ #Escolhe que variáveis aparecem no eixo X, Y e grupo
  geom_boxplot()+ #Seleciona tipo de gráfico de boxplot
  facet_grid(~DAS)+ # Agrupa gráfico por DAS 
  theme_bw()+ #Estilo de gráfico
  xlab("Dias")+ #Altera o título do eixo X
  ylab("Nome da variável no eixo y") #Altera o título do eixo Y




Gráfico de linhas e barras de erros

Para fazer gráfico de linhas, a variável no eixo X precisa ser uma variável numérica, como DAS

Modelo 1

#chama arquivo de dados
dados |> 
  
  # Realizar o agrupamento dos dados por FMICO, LIRRIG e DAS
  group_by(FMICO, LIRRIG,DAS) |> 
  
  # Calcular as estatísticas resumidas (média e erro padrão) para a coluna MAP dentro de cada grupo
  get_summary_stats(MAP, type="mean_se") |> 
  
  # Criar o gráfico de linhas
  ggplot(aes(x = DAS, #Variável no eixo X
             y = mean, #Variável no eixo Y (essa deve ser a varável analisada (dependente))
             fill = LIRRIG)) + #Variável na legenda (as linhas terão as cores agrupadas conforme essa variável)
  
  # Adicionar as linhas de dados
  geom_line(aes(
    color=LIRRIG) #define as cores das linhas de acordo com LIRRIG
    )+
  
  # Adicionar pontos nas linhas (opcional)
  geom_point(aes(
    color=LIRRIG) #define as cores das linhas de acordo com LIRRIG
    )+
  
  #Adiciona barras de erros nos pontos
  geom_errorbar(aes(ymax = mean + se, #Barra de erro para baixo (média - erro)
                   ymin = mean - se, #Barra de erro para cima (média + erro) 
                   width=2, #define a largura da barra de erro 
                   color=LIRRIG #define as cores das linhas de acordo com LIRRIG
                   ))+
  
  #Agrupa os gráficos por FMICO
  facet_grid(~FMICO)+
  
  #Define o estilo do gráfico
  theme_bw()+
  
  #Altera título do eixo X
  xlab("Nome da variável no eixo X (DAS)")+

  #Altera título do eixo Y
  ylab("Nome da variável no eixo Y (MAP)")
`geom_line()`: Each group consists of only one observation.
ℹ Do you need to adjust the group aesthetic?
`geom_line()`: Each group consists of only one observation.
ℹ Do you need to adjust the group aesthetic?
`geom_line()`: Each group consists of only one observation.
ℹ Do you need to adjust the group aesthetic?


Modelo 2

Adicionando letras nas linhas:

#chama arquivo de dados
dados |> 
  
  # Realizar o agrupamento dos dados por FMICO, LIRRIG e DAS
  group_by(FMICO, LIRRIG,DAS) |> 
  
  # Calcular as estatísticas resumidas (média e erro padrão) para a coluna MAP dentro de cada grupo
  get_summary_stats(MAP, type="mean_se") |> 
  
# Criar o gráfico de linhas
  ggplot(aes(x = DAS, #Variável no eixo X
             y = mean, #Variável no eixo Y (essa deve ser a varável analisada (dependente))
             fill = LIRRIG)) + #Variável na legenda (as linhas terão as cores agrupadas conforme essa variável)
  
  # Adicionar as linhas de dados
  geom_line(aes(
    color=LIRRIG) #define as cores das linhas de acordo com LIRRIG
    )+
  
  # Adicionar pontos nas linhas (opcional)
  geom_point(aes(
    color=LIRRIG) #define as cores das linhas de acordo com LIRRIG
    )+
  
  #Adiciona barras de erros nos pontos
  geom_errorbar(aes(ymax = mean + se, #Barra de erro para baixo (média - erro)
                   ymin = mean - se, #Barra de erro para cima (média + erro) 
                   width=2, #define a largura da barra de erro 
                   color=LIRRIG #define as cores das linhas de acordo com LIRRIG
                   ))+
  
  #Agrupa os gráficos por FMICO
  facet_grid(~FMICO)+
  
  #Define o estilo do gráfico
  theme_bw()+
  
  #Altera título do eixo X
  xlab("Nome da variável no eixo X (DAS)")+

  #Altera título do eixo Y
  ylab("Nome da variável no eixo Y (MAP)")
`geom_line()`: Each group consists of only one observation.
ℹ Do you need to adjust the group aesthetic?
`geom_line()`: Each group consists of only one observation.
ℹ Do you need to adjust the group aesthetic?
`geom_line()`: Each group consists of only one observation.
ℹ Do you need to adjust the group aesthetic?

  # Adiocionar letras acima das barras
  geom_text(aes(label = c(
    "a"#1
    
    )),position = position_dodge(1), vjust = -1)
mapping: label = ~c("a") 
geom_text: parse = FALSE, check_overlap = FALSE, size.unit = mm, na.rm = FALSE
stat_identity: na.rm = FALSE
position_dodge 

Gráfico de pontos e barras de erros

Modelo1

dados |>
  group_by(FMICO, LIRRIG, DAS) |>
  get_summary_stats(MAP, type = "mean_se") |>
  convert_as_factor(DAS) |>
  
  ggplot(aes(
    x = FMICO,
    y = mean,
    fill = LIRRIG
  )) +
  geom_point(aes(color = LIRRIG), position = position_dodge(width = 0.2)) +
  geom_errorbar(
    aes(
      x = FMICO,
      ymax = mean + se,
      ymin = mean - se,
      width = 0.1,
      color = LIRRIG
    ),
    position = position_dodge(width = 0.2)
  ) +
  facet_grid(~DAS) +
  theme_bw() +
  xlab("Nome da variável no eixo X (DAS)") +
  ylab("Nome da variável no eixo Y (MAP)")


Modelo2

Adicionando significância entre tratamentos.

teste=
dados |> 
  group_by(DAS, FMICO) |>
  pairwise_t_test(MAP ~ LIRRIG, p.adjust.method = "bonferroni") |> 
  dplyr::select(-`p`, -`p.signif`) |> 
  add_xy_position(x = "DAS") |>  
  filter(`p.adj`<0.05 ) 
library(ggpubr)

dados |>
  group_by(FMICO, LIRRIG, DAS) |>
  get_summary_stats(MAP, type = "mean_se") |>
  convert_as_factor(DAS) |>
  
  ggplot(aes(
    x = FMICO,
    y = mean,
    fill = LIRRIG
  )) +
  geom_point(aes(color = LIRRIG), position = position_dodge(width = 0.2)) +
  geom_errorbar(
    aes(
      x = FMICO,
      ymax = mean + se,
      ymin = mean - se,
      width = 0.1,
      color = LIRRIG
    ),
    position = position_dodge(width = 0.2)
  ) +
  facet_grid(~DAS) +
  theme_bw() +
  xlab("Nome da variável no eixo X (DAS)") +
  ylab("Nome da variável no eixo Y (MAP)")

  # stat_pvalue_manual(teste, tip.length = 0, hide.ns = TRUE)




Gráfico de barras e erros

Modelo 1

dados |> 
  # Realizar o agrupamento dos dados por FMICO e LIRRIG
  group_by(FMICO, LIRRIG) |> 
  # Calcular as estatísticas resumidas (média e erro padrão) para a coluna CLOA dentro de cada grupo
  get_summary_stats(CLOA, type = "mean_se") |> 
  
  # Criar o gráfico de barras com barras de erro
  ggplot(aes(x = FMICO, y = mean, fill = LIRRIG)) +
  # Adicionar as barras de dados
  geom_bar(stat = "identity", position = "dodge") +
  # Adicionar as barras de erro
  geom_errorbar(aes(ymax = mean + se, ymin = mean - se), 
                position = position_dodge(0.9), width = 0.2)+
  # Definir estilo do gráfico
  theme_bw()


Modelo 2

Alterando título dos eixos X e Y e alterando cores das barras:

dados |> 
  # Realizar o agrupamento dos dados por FMICO e LIRRIG
  group_by(FMICO, LIRRIG) |> 
  # Calcular as estatísticas resumidas (média e erro padrão) para a coluna CLOA dentro de cada grupo
  get_summary_stats(CLOA, #Selcionar a variável
                    type = "mean_se") |> #definir o tipo de estatística (média±erro-padrão)
  
  # Criar o gráfico de barras com barras de erro
  ggplot(aes(x = FMICO, y = mean, fill = LIRRIG)) +
  
  # Adicionar as barras de dados
  geom_bar(stat = "identity", #define que a altura das barras seja a média
           position = "dodge", #define que as barras fiquem lado a lado
           color = "black") + #Adiciona cotorno preto às barras
  
  # Escolha as cores das barras manualmente (pode usar nome da cor ou código hexadecimal)
    scale_fill_manual(values = c("red", "#555555", "#ffffff")) +  
  
  # Adicionar as barras de erro
  geom_errorbar(aes(ymax = mean + se, ymin = mean - se), 
                position = position_dodge(0.9), width = 0.2)+
  # Definir estilo do gráfico
  theme_bw()+
  
  #Altera título do eixo X
  xlab("Nome da variável FMICO")+
  
  #Altera título do eixo Y
  ylab("Nome da variável CLOA")


Modelo 3

Adicionado letras nas barras:

dados |> 
  # Realizar o agrupamento dos dados por FMICO e LIRRIG
  group_by(FMICO, LIRRIG) |> 
  # Calcular as estatísticas resumidas (média e erro padrão) para a coluna CLOA dentro de cada grupo
  get_summary_stats(CLOA, #Selcionar a variável
                    type = "mean_se") |> #definir o tipo de estatística (média±erro-padrão)
  
  # Criar o gráfico de barras com barras de erro
  ggplot(aes(x = FMICO, y = mean, fill = LIRRIG)) +
  
  # Adicionar as barras de dados
  geom_bar(stat = "identity", #define que a altura das barras seja a média
           position = "dodge", #define que as barras fiquem lado a lado
           color = "black") + #Adiciona cotorno preto às barras
  
  # Escolha as cores das barras manualmente (pode usar nome da cor ou código hexadecimal)
    scale_fill_manual(values = c("red", "#555555", "#ffffff")) +  
  
  # Adicionar as barras de erro
  geom_errorbar(aes(ymax = mean + se, ymin = mean - se), 
                position = position_dodge(0.9), width = 0.2)+
  # Definir estilo do gráfico
  theme_bw()+
  
  #Altera título do eixo X
  xlab("Nome da variável FMICO")+
  
  #Altera título do eixo Y
  ylab("Nome da variável CLOA")+
  
  ylim(0,50)+ #AUmentando a escala de Y para caber as letras no gráfico

  # Adiocionar letras acima das barras
  geom_text(aes(label = c(
    "a",#1
    "b",#2
    "c",#3
    "d",#4
    "e",#5
    "f",#6
    "g",#7
    "h",#8
    "i" #9
    
    )),position = position_dodge(1), vjust = -1)


Modelo 4

Reduzindo a escala do gráfica

dados |> 
  # Realizar o agrupamento dos dados por FMICO e LIRRIG
  group_by(FMICO, LIRRIG) |> 
  # Calcular as estatísticas resumidas (média e erro padrão) para a coluna CLOA dentro de cada grupo
  get_summary_stats(CLOA, #Selcionar a variável
                    type = "mean_se") |> #definir o tipo de estatística (média±erro-padrão)
  
  # Criar o gráfico de barras com barras de erro
  ggplot(aes(x = FMICO, y = mean, fill = LIRRIG)) +
  
  # Adicionar as barras de dados
  geom_bar(stat = "identity", #define que a altura das barras seja a média
           position = "dodge", #define que as barras fiquem lado a lado
           color = "black") + #Adiciona cotorno preto às barras
  
  # Escolha as cores das barras manualmente (pode usar nome da cor ou código hexadecimal)
    scale_fill_manual(values = c("red", "#555555", "#ffffff")) +  
  
  # Adicionar as barras de erro
  geom_errorbar(aes(ymax = mean + se, ymin = mean - se), 
                position = position_dodge(0.9), width = 0.2)+
  # Definir estilo do gráfico
  theme_bw()+
  
  #Altera título do eixo X
  xlab("Nome da variável FMICO")+
  
  #Altera título do eixo Y
  ylab("Nome da variável CLOA")+
  
  #Aumentando a escala de Y para caber as letras no gráfico
  #Usando coord_cartesian para definir o range e não subir as barras
  coord_cartesian(ylim = c(20, 50))+ 

  # Adiocionar letras acima das barras
  geom_text(aes(label = c(
    "a",#1
    "b",#2
    "c",#3
    "d",#4
    "e",#5
    "f",#6
    "g",#7
    "h",#8
    "i" #9
    
    )),position = position_dodge(1), vjust = -1)