Carregando pacotes e o banco de dados “pinguins”

library(tidyverse)
## ── 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.2     ✔ tibble    3.3.0
## ✔ lubridate 1.9.4     ✔ tidyr     1.3.1
## ✔ purrr     1.0.4     
## ── 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
library(dados) # biblioteca com vários exemplos de BD
library(ggthemes)
library(ggplot2)
library(summarytools)
## 
## Anexando pacote: 'summarytools'
## 
## O seguinte objeto é mascarado por 'package:tibble':
## 
##     view
library(dplyr)
library(forcats)
library(scales)
## 
## Anexando pacote: 'scales'
## 
## O seguinte objeto é mascarado por 'package:purrr':
## 
##     discard
## 
## O seguinte objeto é mascarado por 'package:readr':
## 
##     col_factor
pinguins
## # A tibble: 344 × 8
##    especie        ilha  comprimento_bico profundidade_bico comprimento_nadadeira
##    <fct>          <fct>            <dbl>             <dbl>                 <int>
##  1 Pinguim-de-ad… Torg…             39.1              18.7                   181
##  2 Pinguim-de-ad… Torg…             39.5              17.4                   186
##  3 Pinguim-de-ad… Torg…             40.3              18                     195
##  4 Pinguim-de-ad… Torg…             NA                NA                      NA
##  5 Pinguim-de-ad… Torg…             36.7              19.3                   193
##  6 Pinguim-de-ad… Torg…             39.3              20.6                   190
##  7 Pinguim-de-ad… Torg…             38.9              17.8                   181
##  8 Pinguim-de-ad… Torg…             39.2              19.6                   195
##  9 Pinguim-de-ad… Torg…             34.1              18.1                   193
## 10 Pinguim-de-ad… Torg…             42                20.2                   190
## # ℹ 334 more rows
## # ℹ 3 more variables: massa_corporal <int>, sexo <fct>, ano <int>
### Uma variavel categorica
## Frequencia simples -
# Grafico com percentuais vertical

pinguins %>%
  group_by(especie) %>%
  count() %>% ungroup() %>% 
  mutate(
    porc = n / sum(n),
    rotulo = scales::number(100 * porc, accuracy = 0.1, suffix = "%")
  ) %>% 
  ggplot(aes(x = forcats:: fct_reorder(especie, -porc), y=porc)) +
  geom_bar(stat = "identity", fill="steelblue1") + 
  geom_text(aes(label=rotulo), size=3.2, vjust=-0.4)+
  scale_y_continuous(labels = scales::percent_format(), 
                     expand = expansion(mult = c(0, 0.05))) +
  labs(y="Frequencia (%)", x = "Espécie")+
  theme_classic()

# Grafico com percentuais - Horizontal

pinguins %>%
  group_by(especie) %>%
  count() %>% ungroup() %>% 
  mutate(
    porc = n / sum(n),
    rotulo = scales::number(100 * porc, accuracy = 0.1, suffix = "%")
  ) %>% 
  ggplot(aes(y = forcats:: fct_reorder(especie, -porc), x=porc)) +
  geom_bar(stat = "identity", fill="steelblue1") + 
  geom_text(aes(label=rotulo), size=3.2, hjust=-0.2)+
  scale_x_continuous(labels = scales::percent_format(), 
                     expand = expansion(mult = c(0, 0.15))) +
  labs(x="Frequencia (%)", y = "Espécie")+
  theme_classic()

## Como apresentar dados de duas variaveis categóricas

## Frequencia com percentuais - barras empilhadas
# Calcula os percentuais de especie por ilha
perc_ilha <- pinguins %>% group_by(ilha) %>% count(especie) %>% 
  mutate(percent=n/sum(n) * 100)
ggplot(
  perc_ilha, 
  aes(x = ilha, y = percent, fill = especie)) +
  geom_bar(stat = "identity") +
  geom_text(aes(label = sprintf("%.1f%%", percent)),
            position=position_stack(vjust=0.5),
            size=3.2, color="white") +
    labs(x="Ilha",
       y="Percentual (%)",
       fill= "Especie")+
  theme_classic() 

## Como apresentar dados de duas variaveis categóricas

## Frequencia com percentuais - barras agrupadas
# Calcula os percentuais de especie por ilha
perc_ilha <- pinguins %>% group_by(ilha) %>% count(especie) %>% 
  mutate(percent=n/sum(n) * 100)
ggplot(
  perc_ilha, 
  aes(x = ilha, y = percent, fill = especie)) +
  geom_bar(stat = "identity", position = position_dodge(width = 0.9)) +
  geom_text(aes(label = sprintf("%.1f%%", percent)),
            position=position_dodge(width = 0.9),
            size=3.2, vjust= -0.4, color="black") +
  scale_y_continuous(
                     expand = expansion (mult=c(0, 0.05))) +
  labs(x="Ilha",
       y="Percentual (%)",
       fill= "Especie")+
  theme_classic() + theme(legend.position = "bottom")