O ggplot2 é uma das bibliotecas mais populares para criação de gráficos em R. Ele foi desenvolvido por Hadley Wickham e é conhecido por sua abordagem de “gramática dos gráficos”, que permite criar visualizações complexas com facilidade. Uma das principais características do ggplot2 é o conceito de camadas, onde adicionamos componentes visuais ao gráfico de forma incremental, permitindo maior controle sobre a estética e os dados representados.
Para começar a trabalhar com o ggplot2, precisamos carregar a biblioteca, o ggplot2 faz parte do tidyverse.
Para a aula de hoje, vamos agrupar 16 bancos de dados sobre “Filmes”, disponíveis em Kaggle.
Primeira coisa que precisamos fazer é ler os 16 bancos de dados, criar uma variável com o tipo do filme e em seguida montar o nosso banco único para podermos explorar os dados.
Loading required package: magrittr
Attaching package: 'magrittr'
The following object is masked from 'package:purrr':
set_names
The following object is masked from 'package:tidyr':
extract
Warning in filmes[[i]]$year %<>% as.integer(): NAs introduced by coercion
Warning in filmes[[i]]$year %<>% as.integer(): NAs introduced by coercion
Warning in filmes[[i]]$year %<>% as.integer(): NAs introduced by coercion
Warning in filmes[[i]]$year %<>% as.integer(): NAs introduced by coercion
Warning in filmes[[i]]$year %<>% as.integer(): NAs introduced by coercion
Warning in filmes[[i]]$year %<>% as.integer(): NAs introduced by coercion
Warning in filmes[[i]]$year %<>% as.integer(): NAs introduced by coercion
Warning in filmes[[i]]$year %<>% as.integer(): NAs introduced by coercion
Warning in filmes[[i]]$year %<>% as.integer(): NAs introduced by coercion
Warning in filmes[[i]]$year %<>% as.integer(): NAs introduced by coercion
Warning in filmes[[i]]$year %<>% as.integer(): NAs introduced by coercion
Warning in filmes[[i]]$year %<>% as.integer(): NAs introduced by coercion
Warning in filmes[[i]]$year %<>% as.integer(): NAs introduced by coercion
Warning in filmes[[i]]$year %<>% as.integer(): NAs introduced by coercion
Warning in filmes[[i]]$year %<>% as.integer(): NAs introduced by coercion
Aplicação: Mostra a relação entre duas variáveis quantitativas.
filmes%>%# Carregar o bancoggplot()+## Chamar o ggplotaes( x =year, y =`gross(in $)`)+## aplicar a estética, isto é, quais são as variáveis e o que elas significam, x e y, neste casogeom_point()# Fazer o scatterplot
Warning: Removed 343261 rows containing missing values or values outside the scale range
(`geom_point()`).
Podemos incluir a cor dos pontos, mudando a estética do gráfico.
filmes%>%ggplot()+aes( x =year, y =`gross(in $)`, color =tipo)+## Adicionamos corgeom_point()
Warning: Removed 343261 rows containing missing values or values outside the scale range
(`geom_point()`).
Warning: Removed 343261 rows containing missing values or values outside the scale range
(`geom_point()`).
Suponha que tenhamos interesse em que o tamanho dos pontos estejam relacionados com o rating do filme. Vamos fazer isso, agora, apenas para os filmes de animação.
Warning: Removed 18 rows containing missing values or values outside the scale range
(`geom_line()`).
Warning: Removed 19 rows containing missing values or values outside the scale range
(`geom_point()`).
filmes%>%group_by(year)%>%summarise(Valor_Gasto_Medio =mean(`gross(in $)`, na.rm =TRUE))%>%ggplot()+aes( x =year, y =Valor_Gasto_Medio)+geom_line(alpha =0.2)+## Alteramos a transparencia da linhageom_point()+## Colocamos Pontoslabs(x ="Ano de Lançamento", y ="Investimento ($)", title ="Gráfico do investimento médio em filmes por ano")+theme_minimal()
Warning: Removed 18 rows containing missing values or values outside the scale range
(`geom_line()`).
Warning: Removed 19 rows containing missing values or values outside the scale range
(`geom_point()`).
Warning: Removed 137362 rows containing non-finite outside the scale range
(`stat_ydensity()`).
Removed 137362 rows containing non-finite outside the scale range
(`stat_boxplot()`).
7.2 Adições ao ggplot2 & outros procedimentos gráficos
7.2.1 Gráficos de Dispersão Hexagonais
O geom_hex é útil para criar gráficos de dispersão hexagonais. Esses gráficos são úteis quando você deseja representar dados de alta densidade em um gráfico de dispersão, especialmente quando há muitos pontos que se sobrepõem.
Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
ℹ Please use `linewidth` instead.
Warning: Removed 3658 rows containing non-finite outside the scale range
(`stat_binhex()`).
Warning: Computation failed in `stat_binhex()`.
Caused by error in `compute_group()`:
! The package "hexbin" is required for `stat_bin_hex()`.
Warning: The `guide` argument in `scale_*()` cannot be `FALSE`. This was deprecated in
ggplot2 3.3.4.
ℹ Please use "none" instead.
7.2.2 Gráfico de Contorno
O geom_contour é uma camada geométrica do pacote ggplot2 em R que é usada para criar gráficos de contorno. Os gráficos de contorno são usados para visualizar a densidade de pontos em um espaço bidimensional, onde as linhas de contorno representam regiões de densidade semelhante. Isso é útil quando você deseja identificar padrões de densidade em um gráfico de dispersão ou mapa.
Warning: There was 1 warning in `mutate()`.
ℹ In argument: `runtime_num = stringr::str_remove(runtime, "min") %>%
str_squish() %>% as.numeric()`.
Caused by warning in `stringr::str_remove(runtime, "min") %>% str_squish() %>% as.numeric()`:
! NAs introduced by coercion
7.3 Utilizando o pacote esquisse
Uma opção para facilitar a utilização do pacote ggplot2 é utilizarmos o addinesquisse. A utilização do pacote permite a criação de um gráfico base que podemos personalizar em seguir.
7.3.1 Adcionando labels nos gráficos
Muitas vezes temos interesse em incluir alguma informação no nosso gráfico, seja ela por meio de um texto ou anotação. Uma maneira simples e rápida para fazermos isso é pelo uso da estética label e o geom_text.
Warning: Removed 3658 rows containing missing values or values outside the scale range
(`geom_point()`).
Warning: Removed 8390 rows containing missing values or values outside the scale range
(`geom_label()`).
Contudo, nem sempre é possível incluirmos os labels dessa maneira. A extensão ggrepel é uma alternativa, permitindo que vários labels seja adcionados sem sobreposição.