Vamos explorar alguns aspectos adicionais dos gráficos de barra, como a mudança nos nomes das classes e a reorganização das barras.
library(tidyverse)
library(readxl)
msleep <- read_excel("dados/msleep.xlsx")
glimpse(msleep)
## Rows: 83
## Columns: 11
## $ name <chr> "Cheetah", "Owl monkey", "Mountain beaver", "Greater shor…
## $ genus <chr> "Acinonyx", "Aotus", "Aplodontia", "Blarina", "Bos", "Bra…
## $ vore <chr> "carni", "omni", "herbi", "omni", "herbi", "herbi", "carn…
## $ order <chr> "Carnivora", "Primates", "Rodentia", "Soricomorpha", "Art…
## $ conservation <chr> "lc", NA, "nt", "lc", "domesticated", NA, "vu", NA, "dome…
## $ sleep_total <dbl> 12.1, 17.0, 14.4, 14.9, 4.0, 14.4, 8.7, 7.0, 10.1, 3.0, 5…
## $ sleep_rem <dbl> NA, 1.8, 2.4, 2.3, 0.7, 2.2, 1.4, NA, 2.9, NA, 0.6, 0.8, …
## $ sleep_cycle <dbl> NA, NA, NA, 0.1333333, 0.6666667, 0.7666667, 0.3833333, N…
## $ awake <dbl> 11.9, 7.0, 9.6, 9.1, 20.0, 9.6, 15.3, 17.0, 13.9, 21.0, 1…
## $ brainwt <dbl> NA, 0.01550, NA, 0.00029, 0.42300, NA, NA, NA, 0.07000, 0…
## $ bodywt <dbl> 50.000, 0.480, 1.350, 0.019, 600.000, 3.850, 20.490, 0.04…
Aqui, fazemos uma cópia da base de dados original msleep
para msleep2
para não alterar a base de dados original.
msleep2 <- msleep
vore
:class(msleep2$vore)
## [1] "character"
character
e vamos transformar em fator, mas é importante checar a ordem em que os fatores estarão presente na base de dados:msleep2$vore <- factor(msleep2$vore) # transformando em fator
levels(msleep2$vore) # checando os nÃveis do fator
## [1] "carni" "herbi" "insecti" "omni"
Teremos que renomear na mesma ordem:
msleep2$vore <- factor(msleep2$vore,
labels = c("CarnÃvoros",
"HerbÃvoros",
"InsectÃvoros",
"OmnÃvoros"))
table(msleep2$vore)
##
## CarnÃvoros HerbÃvoros InsectÃvoros OmnÃvoros
## 19 32 5 20
table(msleep$vore)
##
## carni herbi insecti omni
## 19 32 5 20
Vemos que os nomes foram alterados e não foram trocados de posição. Agora é só prosseguir com a cosntrução do gráfico de barras, lembrando que agora vamos usar a base de dados msleep2
:
msleep2 %>%
filter(!is.na(vore)) %>%
ggplot(aes(x = vore)) +
geom_bar(color = "black", fill = "#0086b3") +
labs(title = "Alimentação",
subtitle = "base de dados msleep",
x = "Tipo de alimentação",
y = "Frequência") +
theme_linedraw()
# Salvando a figura
ggsave("boxplot_alimentacao.png",
width = 10,
height = 10,
units = "cm")
vore
, e vamos salvar esta informação numa nova base de dados chamada alimentacao
:alimentacao <- msleep2 %>%
filter(!is.na(vore)) %>% # filtra para excluir os NAs
group_by(vore) %>% # agrupa por vore/alimentação
count() # contagem de cada classe
alimentacao
## # A tibble: 4 x 2
## # Groups: vore [4]
## vore n
## <fct> <int>
## 1 CarnÃvoros 19
## 2 HerbÃvoros 32
## 3 InsectÃvoros 5
## 4 OmnÃvoros 20
alimentacao
:alimentacao %>%
ggplot(aes(x = reorder(vore, -n, sum), y = n)) +
geom_bar(stat="identity", fill="#f68060", color = "black", alpha=.6) +
labs(title = "Alimentação",
subtitle = "base de dados msleep",
x = "Tipo de alimentação",
y = "Frequência") +
theme_linedraw()
aes(x = reorder(vore, -n, sum), y = n)
este trecho do código nos diz para reordenar a variável vore
de maneira decrescente em relação à variável n
. Por padrão, a ordenação é feita em relação à média, daà devemos explicitar que queremos a ordenação pela soma (sum
) das observações em cada classe.
Se quisermos o gráfico em ordem crescente, é só alterar o sinal de n
, ao invés de -n
, escrvemos somente n
.
alimentacao %>%
ggplot(aes(x = reorder(vore, n, sum), y = n)) +
geom_bar(stat="identity", fill="#f68060", color = "black", alpha=.6) +
labs(title = "Alimentação",
subtitle = "base de dados msleep",
x = "Tipo de alimentação",
y = "Frequência") +
theme_linedraw()
alimentacao %>%
ggplot(aes(x = reorder(vore, n, sum), y = n)) +
geom_bar(stat="identity", fill="#f68060", color = "black", alpha=.6) +
labs(title = "Alimentação",
subtitle = "base de dados msleep",
x = "Tipo de alimentação",
y = "Frequência") +
theme_linedraw() +
coord_flip()