Exercicio3 - Tidyverse (Gráficos)

Author

Luis Olivera

Published

October 20, 2024

Atividade 1

Utilizando os dados de produção de ovos nos EUA faça um gráfico mostrando a evolução do número de ovos de galinhas criadas livres (orgânicas e não-orgânicas) ao longo dos anos.

Code
# Carregar pacotes necessários - Execrcico1
library(tidyverse)
Warning: package 'tidyverse' was built under R version 4.3.3
Warning: package 'ggplot2' was built under R version 4.3.3
Warning: package 'tidyr' was built under R version 4.3.3
Warning: package 'readr' was built under R version 4.3.3
Warning: package 'purrr' was built under R version 4.3.3
Warning: package 'dplyr' was built under R version 4.3.3
Warning: package 'stringr' was built under R version 4.3.3
Warning: package 'forcats' was built under R version 4.3.3
Warning: package 'lubridate' was built under R version 4.3.3
── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
✔ dplyr     1.1.4     ✔ readr     2.1.5
✔ forcats   1.0.0     ✔ stringr   1.5.1
✔ ggplot2   3.5.1     ✔ tibble    3.2.1
✔ lubridate 1.9.3     ✔ tidyr     1.3.1
✔ purrr     1.0.2     
── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag()    masks stats::lag()
ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
Code
# Carregar os dados de produção de ovos
eggs <- readr::read_csv('https://raw.githubusercontent.com/rfordatascience/tidytuesday/master/data/2023/2023-04-11/egg-production.csv')
Rows: 220 Columns: 6
── Column specification ────────────────────────────────────────────────────────
Delimiter: ","
chr  (3): prod_type, prod_process, source
dbl  (2): n_hens, n_eggs
date (1): observed_month

ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
Code
# Separar a coluna 'observed_month' em 'Ano', 'Mes' e 'Dia'
eggs <- eggs %>% separate(observed_month, into = c("Ano", "Mes", "Dia"), sep = "-")

# Filtrar os dados para galinhas criadas livres (orgânicas e não-orgânicas)
eggs_free_range <- eggs %>%
  filter(prod_type == "table eggs", prod_process %in% c("cage-free (organic)", "cage-free (non-organic)"))

# Criar o gráfico de evolução do número de ovos ao longo dos anos
ggplot(eggs_free_range, aes(x = Ano, y = n_eggs, color = prod_process, group = prod_process)) +
  geom_line(size = 1.2) +
  geom_point(size = 2) +
  labs(title = "Evolução do Número de Ovos de Galinhas Criadas Livres (Orgânicas e Não-Orgânicas)",
       x = "Ano", y = "Número de Ovos", color = "Processo de Produção") +
  theme_minimal() +
  theme(plot.title = element_text(hjust = 0.5))
Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
ℹ Please use `linewidth` instead.

Atividade 2

Utilizando os dados de produção de ovos nos EUA faça um gráfico comparando a produtividade dos diferentes tipos de processos e dos diferentes tipos de produtos.

Code
# Carregar pacotes necessários - Execrcico2
library(tidyverse)

# Carregar os dados de produção de ovos
eggs <- readr::read_csv('https://raw.githubusercontent.com/rfordatascience/tidytuesday/master/data/2023/2023-04-11/egg-production.csv')
Rows: 220 Columns: 6
── Column specification ────────────────────────────────────────────────────────
Delimiter: ","
chr  (3): prod_type, prod_process, source
dbl  (2): n_hens, n_eggs
date (1): observed_month

ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
Code
# Separar a coluna 'observed_month' em 'Ano', 'Mes' e 'Dia'
eggs <- eggs %>% separate(observed_month, into = c("Ano", "Mes", "Dia"), sep = "-")

# Filtrar para remover 'hatching eggs' e 'all' no processo de produção
eggs_filtered <- eggs %>%
  filter(prod_type != "hatching eggs", prod_process != "all")

# Criar uma nova variável 'produtividade' (número de ovos por galinha)
eggs_filtered <- eggs_filtered %>%
  mutate(produtividade = n_eggs / n_hens)

# Criar o gráfico comparando a produtividade dos diferentes processos e produtos
ggplot(eggs_filtered, aes(x = prod_process, y = produtividade, fill = prod_type)) +
  geom_boxplot() +
  labs(title = "Produtividade dos Diferentes Tipos de Processos e Produtos",
       x = "Processo de Produção", y = "Produtividade (Ovos por Galinha)", fill = "Tipo de Produto") +
  theme_minimal() +
  theme(plot.title = element_text(hjust = 0.5))

Atividade 3

Utilizando os dados de produção de ovos nos EUA faça um gráfico comparando a produtividade entre os meses dos anos.

Code
# Carregar pacotes necessários - Execrcico3
library(tidyverse)

# Carregar os dados de produção de ovos
eggs <- readr::read_csv('https://raw.githubusercontent.com/rfordatascience/tidytuesday/master/data/2023/2023-04-11/egg-production.csv')
Rows: 220 Columns: 6
── Column specification ────────────────────────────────────────────────────────
Delimiter: ","
chr  (3): prod_type, prod_process, source
dbl  (2): n_hens, n_eggs
date (1): observed_month

ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
Code
# Separar a coluna 'observed_month' em 'Ano', 'Mes' e 'Dia'
eggs <- eggs %>% separate(observed_month, into = c("Ano", "Mes", "Dia"), sep = "-")

# Filtrar para remover 'hatching eggs' e 'all' no processo de produção
eggs_filtered <- eggs %>%
  filter(prod_type != "hatching eggs", prod_process != "all")

# Criar uma nova variável 'produtividade' (número de ovos por galinha)
eggs_filtered <- eggs_filtered %>%
  mutate(produtividade = n_eggs / n_hens)

# Criar o gráfico comparando a produtividade entre os meses dos anos
ggplot(eggs_filtered, aes(x = Mes, y = produtividade, fill = Ano)) +
  geom_boxplot() +
  labs(title = "Produtividade Entre os Meses dos Anos",
       x = "Mês", y = "Produtividade (Ovos por Galinha)", fill = "Ano") +
  theme_minimal() +
  theme(plot.title = element_text(hjust = 0.5))

Atividade 4

Utilizando os dados do projeto portal - que não é do ET Bilu faça um gráfico mostrando a relação linear entre o tamanho do pé e o peso dos roedores.

Code
# Carregar pacotes necessários - Execrcico4
library(tidyverse)

# Carregar os dados dos roedores
data_url <- "https://raw.githubusercontent.com/rfordatascience/tidytuesday/master/data/2023/2023-05-02/species.csv"  # URL correta para os dados dos roedores
rodent_data <- read_csv(data_url)
Rows: 21 Columns: 15
── Column specification ────────────────────────────────────────────────────────
Delimiter: ","
chr  (4): species, scientificname, taxa, commonname
dbl (11): censustarget, unidentified, rodent, granivore, minhfl, meanhfl, ma...

ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
Code
# Criar o gráfico mostrando a relação linear entre tamanho do pé e peso
ggplot(rodent_data, aes(x = meanhfl, y = meanwgt)) +
  geom_point(alpha = 0.7, color = "blue") +  # Adiciona os pontos
  geom_smooth(method = "lm", se = FALSE, color = "red") +  # Adiciona a linha de regressão linear
  labs(title = "Relação entre Tamanho do Pé e Peso dos Roedores",
       x = "Tamanho do Pé (mm)",
       y = "Peso (g)") +
  theme_minimal() +
  theme(plot.title = element_text(hjust = 0.5))
`geom_smooth()` using formula = 'y ~ x'

Atividade 5

Utilizando os dados do projeto portal compare o peso médio e o peso dos juvenis entre os diferentes gêneros.

Code
# Carregar pacotes necessários - Execrcico5
library(tidyverse)

# Carregar os dados dos roedores
data_url <- "https://raw.githubusercontent.com/rfordatascience/tidytuesday/master/data/2023/2023-05-02/species.csv"
rodent_data <- read_csv(data_url)
Rows: 21 Columns: 15
── Column specification ────────────────────────────────────────────────────────
Delimiter: ","
chr  (4): species, scientificname, taxa, commonname
dbl (11): censustarget, unidentified, rodent, granivore, minhfl, meanhfl, ma...

ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
Code
# Separar o nome científico em gênero e epíteto
rodent_data <- rodent_data %>%
  separate(scientificname, into = c("Genero", "epiteto"), sep = " ")

# Gráfico comparando o peso médio e o peso dos juvenis entre diferentes gêneros
ggplot(rodent_data, aes(x = Genero)) +
  geom_boxplot(aes(y = juvwgt, fill = "Juvenis"), alpha = 0.6, width = 0.4) +
  geom_boxplot(aes(y = meanwgt, fill = "Peso Médio"), alpha = 0.6, width = 0.4) +
  scale_fill_manual(values = c("lightblue", "lightgreen")) +
  labs(title = "Comparação de Peso entre Gêneros de Roedores",
       x = "Gênero",
       y = "Peso (g)",
       fill = "Tipo de Peso") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))
Warning: Removed 3 rows containing non-finite outside the scale range
(`stat_boxplot()`).

Atividade 6

Utilizando os dados do projeto portal compare o peso dos animais nos diferentes tratamentos para os diferentes sexos.

Code
# Cargar paquetes necesarios
library(tidyverse)

# Cargar los datos
surveys <- readr::read_csv('https://raw.githubusercontent.com/rfordatascience/tidytuesday/master/data/2023/2023-05-02/surveys.csv')
Rows: 28364 Columns: 22
── Column specification ────────────────────────────────────────────────────────
Delimiter: ","
chr  (14): treatment, species, sex, reprod, age, testes, vagina, pregnant, n...
dbl   (7): month, day, year, plot, stake, hfl, wgt
date  (1): censusdate

ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
Code
# Filtrar datos
surveys_filtered <- surveys %>%
  filter(!is.na(wgt), !is.na(sex), !is.na(treatment))

# Definir nuevos colores para los sexos
my.colors <- c("F" = "#FF6347", "M" = "#4682B4")  # Colores personalizables

# Crear el boxplot
sex <- ggplot(surveys_filtered, aes(x = treatment, y = wgt, fill = sex)) +
  geom_boxplot(position = position_dodge(width = 0.75), width = 0.65, color="#b01b3f") + 
  labs(title = "Comparación del Peso de los Animales por Tratamiento y Sexo", 
       x = "Tratamiento", 
       y = "Peso (g)") +  
  theme_minimal() +
  scale_fill_manual(values = my.colors, name = "Sexo")

# Mostrar el gráfico
print(sex)

Atividade 7

Utilizando os dados do projeto portal faça um gráfico comparando a relação linear entre o tamanho do pé e o peso dos roedores para os diferentes tratamentos.

Code
surveys <- readr::read_csv('https://raw.githubusercontent.com/rfordatascience/tidytuesday/master/data/2023/2023-05-02/surveys.csv')
Rows: 28364 Columns: 22
── Column specification ────────────────────────────────────────────────────────
Delimiter: ","
chr  (14): treatment, species, sex, reprod, age, testes, vagina, pregnant, n...
dbl   (7): month, day, year, plot, stake, hfl, wgt
date  (1): censusdate

ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
Code
filtered_surveys <- surveys %>%
  filter(!is.na(wgt), !is.na(hfl))

sum2 <- summary(lm(wgt~hfl, data=filtered_surveys))

rato <- ggplot(surveys, aes(x=hfl, y=wgt, color=treatment))+
   theme_minimal()+
  geom_point(alpha=0.9, color="lightblue", size=4)+
  geom_smooth(method = "lm", se=F, aes(color = treatment))+
 labs(x="Comprimento do pé (mm)", y="Peso corporal (g)",
       title= "Relação entre tamanho do pé e peso de roedores")+
  annotate("text", label = expression(paste(r^2, "= 0.50, p-value = < 2.2e-16")),
           x=15, y=220)+
  xlim(0,60)

rato
`geom_smooth()` using formula = 'y ~ x'
Warning: Removed 1088 rows containing non-finite outside the scale range
(`stat_smooth()`).
Warning: Removed 1088 rows containing missing values or values outside the scale range
(`geom_point()`).
Warning in is.na(x): is.na() aplicado a un objeto que no es (lista o vector) de
tipo 'expression

Atividade 8

Use qualquer dataset do tidytuesday para fazer algum gráfico! Pense no que você quer visualizar com os dados e como fazer para plotar com as variáveis disponíveis (as possibilidades são inúmeras).

Code
# Carregar pacotes necessários
library(tidyverse)

# Carregar o dataset Diamonds
diamonds <- ggplot2::diamonds

# Criar um gráfico de dispersão
diamond_plot <- ggplot(diamonds, aes(x = carat, y = price, color = cut)) +
  geom_point(alpha = 0.5, size = 2) +  # Adiciona os pontos com transparência
  geom_smooth(method = "lm", se = FALSE, color = "black") +  # Adiciona uma linha de regressão
  labs(title = "Relação entre Quilates e Preço dos Diamantes",
       x = "Quilate",
       y = "Preço (USD)",
       color = "Corte") +
  theme_minimal() +
  theme(plot.title = element_text(hjust = 0.5))

# Exibir o gráfico
diamond_plot
`geom_smooth()` using formula = 'y ~ x'

“Hasta donde llovió, hubo barro”