7 Visualização de dados (dataviz)
Objetivos deste capítulo:
- Apresentar uma introdução à visualização de dados com
- pacote base nativo do R (em expansão)
- pacote lattice (em elaboração)
- pacote ggplot (em expansão)
- confecção de mapas simples (em elaboração)
- gráficos de visualização textual (em expansão)
EM CONSTRUÇÃO
Dicas
- Quer fazer gráficos no R sem programar? Tente o pacote esquisse.
Vamos criar um dataframe com valores aleatórios e depois vamos criar alguns gráficos a partir dele.
# criando um dataframe com valores aleatórios
<- read.table( header = TRUE, sep = ";",
df stringsAsFactors = TRUE, text = '
Col1;Col2;Col3
A;12;24
B;25;41
C;37;13
D;22;18')
# convertendo o datatype das colunas para numeric
$Col2 <- as.numeric(df$Col2)
df$Col3 <- as.numeric(df$Col3) df
7.1 Base plots
O R vem com um pacote básico, nativo de gráficos, como o hist() para histogramas, pie() para gráfico de pizza, barplot() para gráfico de barras, plot() para gráfico de dispersão (scatterplot) e gráficos de linha, e boxplot() para boxplot ou whiskerplot.
7.1.1 Histograma (histogram) no pacote base
Criando um gráfico simples. Histogramas são interessantes para observar a distribuição de frequência de um determinado conjunto de valores numéricos, por exemplo, caso queira ver a distribuição de alturas das pessoas de uma sala de aula. Para tal, precisamos de valores numéricos. Vamos começar pelo histograma que necessita de apenas um vetor com dados numéricos, mas também podemos especificar o número (aproximado) de barras (breaks):
<- c(24, 22, 27, 17, 33)
dados
hist(as.integer(dados))
hist(as.integer(dados), breaks = 2)
Repare que o número de colunas não bate com o número de barras no nosso gráfico.
O histograma cria “breakpoints” ou “bins” usando uma fórmula (sturges). Isto permite termos valores mais arredondados ou mais precisos, a depender da visualização que quisermos. É possível especificar o número de barras com o argumento breaks = X
, mas ainda assim como uma sugestão, já que o R ainda decide se o número é plausível.
hist(df$Col2,
breaks = 4,
main="Meu Título", xlab="Descrição do eixo x", ylab="Descrição do eixo Y",
labels= TRUE, # Adicionar os valores nas barras
border="darkblue", col="lightblue",
density=25, # adicionado hachuras
xlim=c(10,40) # se quisermos delimitar os valores mínimos e máximos no eixo X
)
7.1.2 Gráfico de barras (barplot)
Repetindo o exemplo da introdução ao R na seção sobre fatores, fazendo um gráfico de barras simples a partir de um vetor, mas agora explicando a parte gráfica e aproveitando o pipe do tidyverse. Perceba que o pacote já faz a soma para nós.
# carregando o magritrr para usar os pipes
library(magrittr)
<- c("BSB", "CON", "BSB", "VIC", "GUA", "FOR", "MAO",
aeroportos "GUA", "CON", "CON", "REC", "UDI", "VIC", "GUA")
# Numa versão mínima do gráfico:
%>% factor %>% summary %>% barplot aeroportos
E numa versão mais elaborada do gráfico de barras:
%>%
aeroportos # transformando o vetor em fator para o barplot funcionar
%>%
factor # somando os repetidos
%>%
summary # ordendando com "sort()", e de modo decrescente com "decreasing = TRUE"
sort(., decreasing = TRUE) %>%
# plotando o gráfico
barplot(
main = "Aeroportos Brasil", sub = "Sublegenda",
xlab = "Legenda eixo x", ylab = "Legenda eixo y",
legend.text = "Frequência",
# cores
col = c("darkred", "indianred"),
# rotacionando as legendas do das barras. Bom para quando as legendas são extensas
las=2,
# fazer o gráfico de modo horizontal
horiz = TRUE)
O comando text() permite adicionar texto aos gráficos do R. e o comando legend() permite acrescentar e mudar diversos parâmetros da legenda.
7.1.3 Gráfico de Pizza ou setograma (pie chart)
Os gráficos de pizza, de torta, ou ainda setograma é usado para mostrar diferentes proporções. Eles se tornaram controversos ultimamente, pois perdem o sentido de mostrar claramente diferentes proporções se tivermos muitos itens e/ou com valores próximos. Mas é necessário saber fazê-los:
# Numa versão mínima do gráfico:
|> factor() |> summary() |> pie() aeroportos
Gerando um gráfico de pizza mais elaborado
# criando um vetor nomeado com as frequências de cada aeroporto
<- aeroportos |> factor() |> summary()
aeroportos2
aeroportos2## BSB CON FOR GUA MAO REC UDI VIC
## 2 3 1 3 1 1 1 2
pie(aeroportos2,
main = "Aeroportos",
labels = unname(aeroportos2), # percentual
col = rainbow(length(aeroportos2)) # espectro de cores
)legend("topright", names(aeroportos2), cex = 0.8, fill = rainbow(length(aeroportos)))
Se quiser fazer um gráfico de pizza 3d, dê uma olhada no pacote plotrix.
7.1.4 Gráfico de dispersão (scatterplot)
Criando o gráfico com a função plot()
do pacote base. Vamos precisar de especificar quais os valores de x e y de nosso gráfico: plot(x,y)
plot(df$Col2, df$Col3)
Um pouco de história
O scattterplot foi inventado em 1833 por J. F. W. Herschel em dois papers no jornal Memoirs of the Royal Astronomical Society detalhando a órbita de estrelas gêmeas a partir da observação do ângulo relativo de sua posição e da sua distância angular.
O pacote HistData possui os datasets Virginis
e Virginis.interp
com observações feitas por Herschel das estrelas virgens.
Em 1973, o estatístico Francis Anscombe publicou o seguinte artigo:
ANSCOMBE, Francis J. (1973). Graphs in statistical analysis. The American Statistician, 27, 17–21. https://doi.org/10.2307/2682899
Nele, o estatístico construiu diferentes datasets com mesmo número de elementos (onze), mesma média e desvio padrão, mas que ao virarem gráficos de dispersão, mostravam relações bem diferentes. Com isso queria chamar a atenção para a importância de visualizar relações na análise estatística e não somente a observação das medidas citados, o que poderia ser enganoso. Estes dados estão presentes no pacote datasets: anscombe e outros datasets com esta mesma intenção didática, mas com dados diferentes nos pacotes datasauRus e anscombiser.
# Carregando o dataset
data(anscombe)
str(anscombe)
## 'data.frame': 11 obs. of 8 variables:
## $ x1: num 10 8 13 9 11 14 6 4 12 7 ...
## $ x2: num 10 8 13 9 11 14 6 4 12 7 ...
## $ x3: num 10 8 13 9 11 14 6 4 12 7 ...
## $ x4: num 8 8 8 8 8 8 8 19 8 8 ...
## $ y1: num 8.04 6.95 7.58 8.81 8.33 ...
## $ y2: num 9.14 8.14 8.74 8.77 9.26 8.1 6.13 3.1 9.13 7.26 ...
## $ y3: num 7.46 6.77 12.74 7.11 7.81 ...
## $ y4: num 6.58 5.76 7.71 8.84 8.47 7.04 5.25 12.5 5.56 7.91 ...
# plotando o gráfico
plot(anscombe$x1, anscombe$y1)
Mudando o tipo de figura no gráfico através do parâmetro pch
, sendo:
- 1: círculo
- 2: triângulo
- 3: sinal de mais
- 4: sinal de “x”
- 5: losango
- 6: triângulo reverso
- 7: Quadrado riscado com x
plot(anscombe$x1, anscombe$y1, pch = 2)
Se quisermos adicionar uma linha, usamos abline()
. Como parâmetros:
h
é horizontal ev
vertical. O valor a seguir define onde será o cortea
significa a intersecçãob
é o slope
plot(anscombe$x1, anscombe$y1,
main= "Dataset Anscombe", ylab = "Rótulo eixo Y", xlab = "Rótulo eixo X")
abline(h=10)
plot(anscombe$x1, anscombe$y1,
main= "Dataset Anscombe", ylab = "Rótulo eixo Y", xlab = "Rótulo eixo X")
abline(h=9.5, #local de corte da linha
col = "red", # cor da linha= vermelho
lty = "dashed", # modifica o tipo de linha: tracejado
lwd = 3 # espessura da linha
)
7.1.5 Gráfico de linha (line plot)
Para o gráfico de linhas também utilizamos a função plot()
, porém mudamos o tipo: l
para linhas e o
para linhas e pontos.
plot(df$Col3, type = "l") # apenas linha
plot(df$Col3, type = "o") # linha e ponto
Gráficos de linha múltiplos
plot(df$Col3, type = "o", col = "red")
lines(df$Col2, type = "o", col = "blue")
7.2 Cores
Para saber as cores disponíveis, usamos o comando colors()
, que retorna 657 opções de cores. Se quisermos ver, por exemplo, somente as opções de vermelho:
grep("red", colors(), value = T)
## [1] "darkred" "indianred" "indianred1" "indianred2"
## [5] "indianred3" "indianred4" "mediumvioletred" "orangered"
## [9] "orangered1" "orangered2" "orangered3" "orangered4"
## [13] "palevioletred" "palevioletred1" "palevioletred2" "palevioletred3"
## [17] "palevioletred4" "red" "red1" "red2"
## [21] "red3" "red4" "violetred" "violetred1"
## [25] "violetred2" "violetred3" "violetred4"
Dicas: Cores no R
- Para mais opções de personalização dos gráficos de barra, veja Basic R barplot customization
- Folha de dicas (cheatsheet) de cores no R. Há dicas de pacotes para mais opções de cores, como o colorspace, grDevices e o colorRamps.
- Outra opção bem extensa sobre cores no R é Paletas de cores no R.
CAPÍTULO EM CONSTRUÇÃO
7.3 O pacote Lattice
CAPÍTULO EM CONSTRUÇÃO
(Mas há um exemplo de uso do lattice no apêndice deste manual, sobre a CPI da Pandemia)
7.4 O pacote ggplot2
O ggplot2 é um dos pacotes da suíte de pacotes do tidyverse e segue a gramática dos gráficos de Hadley Wickham. O ggplot é um dos pacotes mais famosos do tidyverse ou mesmo do R. Instalando o pacote ggplot, caso não tenha instalado o tidyverse ou o ggplot:
install.packages('ggplot2', )
Carregando o pacote ggplot:
library(ggplot2)
A chamada lógica da gramática dos gráficos, sob a qual o ggplot foi construído, possui 7 níveis:
- dados: isto é, a base de dados a ser usada.
- aesthetics
aes()
: o que você pecisa para plotar, define os eixos x e y.
- aesthetics
- geoms ou geometria,
geom_*()
, qual tipo de gráfico queremos. Há cerca de 37 tipos disponíveis, como histograma, gráfico de linhas, dispersão, boxplot, etc.
- geoms ou geometria,
- facets
- Estatística. Refere-e a algumas funções estatísticas. Pode-se, por exemplo, acrescentar uma reta de regressão.
- Coord ou Sistema de coordenadas.
- Temas, theme: muda o fundo do gráfico.
Desse modo, vamos plotando o gráfico, nível por nível. A ordem pode mudar um pouco, alguns podem estar ausentes, mas são obrigatórios os três primeiros (dados, aes e geoms), e sem eles, não temos o gráfico. Para ilustar, vamos fazer um histograma, um gráfico simples, e que só precisa do eixo x.
ggplot(data = MeuDataBase, aes(x=ColunaDoDatabase_que_será_o_eixo_x)) + geom_histogram()
E agora um exemplo prático:
ggplot(data = mtcars, aes(x=mpg)) + geom_histogram()
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
Vamos fazer o mesmo barplot de aeroportos
class(aeroportos)
## [1] "character"
# aeroportos não pode ser um vetor char para usarmos no ggplot
# temos de transformá-lo em um tibble
<- tibble::tibble(aer = aeroportos)
aer.tibble ggplot(aer.tibble, aes(aer)) + geom_bar()
Podemos reordenar com base não na ordem alfabética, mas em valores, crescentes ou decrescentes. Para tal, usamos a função fct_reorder()
no nível aes, no seguinte modo: aes(fct_reorder( eixoX, eixoY), eixoY))
.
7.4.1 ggplot: nível aes
Como dito, o nível “aes” define os eixos x e y. É nele que definimos onde entram os dados. Também é aqui que podemos redefinir a ordem de apresentação dos dados. Por exemplo, no gráfico dos aeroportos, podemos reordená-los da seguinte forma:
# plyr cria um data frame com a coluna "x" de nomes/fatores e "freq" com a frequência
<- plyr::count(aeroportos)
aeroportos.df # gerando o gráfico
ggplot(aeroportos.df, aes(reorder(x, -freq), freq)) + geom_col()
Usamos reorder para reordenar conforme o valor de “freq”. Se quisermos em ordem crescente, usamos aes(reorder(x, freq), freq))
. Se quisermos a ordem inversa, dos valores maiores aos menores, acrescentamos o sinal de -
assim: aes(reorder(x, -freq), freq))
.
No caso abaixo, usamos um database já disponível sobre diamantes. Atribuímos, para cada coluna/variável, um aspecto no gráfico, como eixos x e y, cores diferentes e formas.
ggplot(data = diamonds,
aes(x=carat, y=price,
# 'shape' aqui diz que cada valor na variável 'cut' terá uma forma (shape) diferente
shape = cut,
# 'color' diz que cada valor na variável terá uma cor diferente.
# "clarity" é o nome da variável/coluna com base na qual as cores variarão
color = clarity
+
)) geom_point()
## Warning: Using shapes for an ordinal variable is not advised
7.4.1.1 ggplot:Argumento position
Ao menos no caso de gráficos de barras, podemos especificar como gráficos com mais de uma variável terão as informações agrupadas. Primeiro, vamos criar um database com valores aleatórios
<- read.table(header = T, text = '
meuDF mes ano valor valor2
1 2019 23 14
1 2020 31 36
1 2021 28 13
2 2019 28 20
2 2020 29 21
2 2021 30 19
3 2019 19 20
3 2020 26 16
3 2021 24 24')
Gerando o gráfico barras - geom_bar()
- ou de colunas - geom_col()
- é possível distribuir os gráficos de modos distintos.
# para facilitar, vamos salvar parte do código numa variável
<- ggplot(meuDF, aes(x=ano, y=valor, fill=as.factor(mes)))
p
# Vamos agora testar diferentes posições (positions):
# No caso, para cada ano, os valores dos meses
# usando a posição "dodge": "desviar" ou "esquivar"
+ geom_col(position = "dodge") p
# Fill que calcula percentualmente. O eixo y vai até 100%
+ geom_col(position = "fill") p
# stack vai o valor nominal
+ geom_col(position = "stack") p
Se está incomodado com a legenda “as.factor(mes)”, veremos mais adiante como personalizá-lo.
7.4.2 ggplot: Nível geom
“geom”, ou “geometry” (geometria), define o tipo de gráfico que queremos, se gráfico de barras ou linhas, se boxplot, etc. Há 37 tipos diferentes.
Olhando a folha de dicas (cheat sheet) do ggplot2 opção1, opção2 podemos ver as opções de gráficos (geom_alguma_coisa
) quando temos uma variável somente, quando tempos duas e assim por diante.
7.4.2.1 geom_line: gráfico de linha
Criando um data frame com duas variáveis numéricas para testarmos.
<- read.table(header=TRUE, text='
dataf Letra Valor1 Valor2
A 9 4
B 14 6
C 11 8
D 12 5')
Gerando um gráfico de linha simples
ggplot(dataf, aes(x=Valor1, y=Valor2)) +
geom_line()
Na versão ampliada
ggplot(dataf, aes(x=Valor1, y=Valor2)) +
geom_line(
# largura da linha
size=1.5,
# tipo de linha. pontilhada=dashed
linetype = "dotted",
color = "darkblue", # cor
# adiciona uma seta. ver grid::arrow()
arrow=arrow()
+
) # adiciona pontos na interseção
geom_point(size=3, color="red")
- O
linetype
pode ser “blank” (vazio), “solid”, “dashed” (tracejado), “dotted” (pontilhado), “dotdash” (ponto e traço), “longdash” (traços longos), “twodash”. Estes também podem ser especificados por números, sendo 1 para “blank”, 2 para “dashed” e assim por diante.
Para o caso de várias linhas
ggplot(meuDF, aes(x=mes, y=valor)) +
geom_line(aes(group =ano,
# cor conforme o ano
color=as.factor(ano),
# tipo de linha conforme a varivel ano
linetype = as.factor(ano),),
# size: espessura das linhas no gráfico
size=1)
- Se não usarmos o as.factor em ano, os anos serão considerados contínuos e podem aparecer errados na escala, como “2019.5”. Para evitar isso, caso aconteça, usamos o
as.factor()
na variável. linetype = as.factor(ano)
, dentro de aes do geom_line, para gerar o gráfico como queremos. Forçamos a variável ano emas.factor()
pois ao tentar rodar, vimos na mensagem de erro que estava como variável contínua, o que não funciona para este tipo de gráfico. Forçamos então a se tornar discreta com o comandoas.factor
e booom! funcionou.- Mais à frente veremos opções de configurações de cores mais avançadas.
Vejamos agora os níveis opcionais do ggplot. Não há nenhuma ordem certa entre eles.
7.4.3 ggplot: nível facet_
Caso queiramos quebrar as informações em diferentes gráficos, usamos facet. Podemos usar facet_grid
ou facet_wrap
(este inverte os eixos x e y)
ver “facetting” no sheet cheat.
# salvando tudo em uma variável para facilitar o uso
<- ggplot(data=diamonds, aes(x=carat, y=price)) +geom_point()
g
+ facet_grid(.~cut) g
# se quiser compará-los na horizontal:
+ facet_grid(cut~.) g
# cria um grid entre cut e clarity
+ facet_grid(cut~clarity) g
Dica ggplot: facet_
- ver seção Facets (ggplot2) do manual Cookbook R
7.4.4 ggplot: nível stat
O nível “stat” refere-se a “estatística”. Pode-se acrescentar a linha de regressão em um gráfico de dispersão, por exemplo. Há opções de usar funções como lm (linear models, usado em modelos de regressão), glm, gam, loss, rlm.
|>
meuDF ggplot(aes(x=valor, y=valor2)) +
geom_point() +
geom_smooth()
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
Se quisermos a linha da regressão linear, usamos o argumento method = "lm"
, lm significando “linear model”:
|>
meuDF ggplot(aes(x=valor, y=valor2)) +
geom_point() +
geom_smooth(method = "lm")
## `geom_smooth()` using formula 'y ~ x'
O sombreamento ao redor da linha indica o erro padrão. Caso opte por retirá-la, acrescente o argumento se = FALSE
ou se = 0
.
7.4.5 ggplot: nível sistema de coordenadas
- Caso queira limitar os dados que aparecem no gráfico, é possível com
xlim
eylim()
. - Pode-se mudar a proporção, ampliando ou reduzindo os eixos através do ratio, como em
coord_fixed(ratio=4)
- Para rotacionar o gráfico em 90º, acrescente o parâmetro
+ coord_flip()
.
7.4.6 Cores no ggplot
É possível utilizar paletas de cores diferentes do padrão.
Um modo é usar o pacote RColorBrewer e o comando scale_fill_brewer()
Gerando o gráfico usando apenas a coluna Valor1 e a letra
ggplot(dataf, aes(x=Letra, y=Valor1, fill=Letra)) + geom_bar(stat="identity") +
scale_fill_brewer(palette= "BuGn")
Há diversas outras paletas de cores.
- Há cores divergentes, como como BrBG, PiYG, PRGn, PuOr, RdBu, RdGy, RdYlBu, RdYlGn e Spectral;
- há sequência de cores qualitativas, como Accent, Dark2, Paired, Pastel1, Pastel2, Set1, Set2, Set3
- Sequenciais como: Blues, BuGn, BuPu, GnBu, Greens, Greys, Oranges, OrRd, PuBu, PuBuGn, PuRd, Purples, RdPu, Reds, YlGn, YlGnBu, YlOrBr e YlOrRd.
Fonte: cookbook-r.com
Há ainda outras escalas de cores, como scale_alpha(), scale_colour_continuous(), scale_colour_gradient(), scale_colour_grey(), scale_colour_hue(), scale_colour_steps(), scale_colour_viridis_d().
7.4.6.1 Cores definidas manualmente: scale_fill_manual
Para usar sequência de cores personalizadas usa-se comando é scale_fill_manual
e uma sequência de nomes de cores - como “green”, “blue”. Para ver a lista completa, digite colors()
no console - ou use valores hexadecimais das cores.
= c("yellowgreen", "#66CC99", "#3CB371", "seagreen4")
Cores ggplot(dataf, aes(x=Letra, y=Valor1, fill=Letra)) +
geom_bar(stat="identity") +
scale_fill_manual(values=Cores)
7.4.6.2 Cores contínuas
Primeiro criando um data frame com valores aleatórios.
<- read.table(header=TRUE, text='
df valorX valorY
3 3.4
2 4
2.5 5
1 2.3
3.5 5.4
1.7 2.7
2.3 2.6
2.7 3.1')
Podemos acrescentar gradientes diferentes, como o comando rainbow()
. O valor dentro dele refere-se ao número de cores dentro do espectro do arco-íris
ggplot(df, aes(x=valorX, y=valorY, colour=valorX)) +
geom_point(stat="identity") +
scale_colour_gradientn(colours=rainbow(4))
7.4.7 Anotações no ggplot: annotate()
Caso queira adicionar anotação em um gráfico, a função annotate() permite adicionar comentários, destaques, linhas, etc. Em sua versão mínima para adicionar comentário de texto, precisamos dos argumentos:
annotate(geom, x = valorX, y = valorY, label = "texto"
.
O argumento geom
da função annotate aceita os seguintes parâmetros:
"text"
: para o texto sem caixa"label"
: para texto dentro de uma caixa"segment"
: para fazer um traço (parâmetros exigidos: x, xend, y, yend)"pointrange"
: para um traço com ponto (parâmetros exigidos: x, y, ymin, ymax)"rect"
: para destacar uma região com um retângulo. (parâmetros exigidos: xmin, xmax ymin, ymax)
Vamos gerar um gráfico e salvá-lo como o objeto “grafico”
<- meuDF |>
grafico ggplot(aes(x=valor, y=valor2)) +
geom_point()
grafico
+ ggplot2::annotate(geom = "label", # ou "text", caso não queira a caixa ao redor do texto
grafico x = 24, y = 25, # posições no eixo cartesiano
colour = "blue",
size = 2, # tamanho da letra
label = "texto")
A função annotate também permite destacar região no gráfico
+
grafico ::annotate("rect",
ggplot2# posições no eixo cartesiano:
xmin = 25, xmax = 28.5,
ymin = 15, ymax = 22,
# colour="blue", # cor de contorno da caixa
alpha = .2 # nível de transparência
)
PARTE SOBRE GGPLOT AINDA EM EXPANSÃO
7.4.8 Dicas ggplot
Dicas
- Quer fazer gráficos no R sem programar? Tente o pacote esquisse.
- folha de dicas/cheat sheet ggplot2:
- opção1, opção2, com resumo dos comandos do ggplot.
- Para entender cada elemento do gráfico ggplot, como legenda, titulo, etc. de Claragrannel
- Cheatsheet de Christian Bukhard
- Cheatsheets de Interactive web visualizations for R com dicas do que fazer diversos pacotes, como DiagrammeR, Leflet, Dygraphs, ggiraph, Plotly, etc.
- Livro online gratuito em português Introdução a R para Visualização e Apresentação de Dados com geração automática de relatórios, mapas, e diferentes gráficos com o ggplot2.
Saindo do básico no ggplot
- Exemplos de gráficos variados feitos com ggplot e com tutoriais ggplotr. Bom para sair do básico.
- É possível personalizar mais ainda o texto do ggplot. Para isso podemos usar o pacote ggtext, que nos permite usar com texto em markdown e html.
- Para gráficos animados
- Pacote tourr, para visualizar dados multivariados. Aqui um exemplo do tourr em ação.
7.4.9 Dicas de extensões e outros pacotes gráficos
Dica para tirar dúvidas com o GGplot
O pacote ggx
permite digitar sua dúvida sobre o ggplot e este retornar a solução. Não faz milagres, mas pode ajudar.
Para utilizá-lo, após instalá-lo através do install.packages('ggx')
:
library(ggx) # carregando o pacote
gghelp("flip x and y axis")
## coord_flip()
gghelp("label in darkblue")
## theme(axis.title.x=element_text(color='darkblue'))
gghelp("rotate x-axis label 45 degree")
## theme(axis.text.x = element_text(angle = 45))
Dicas
- O pacote patchwork torna fácil fazer gráficos múltiplos. Há um exemplo de seu uso no apêndice sobre CPI da Pandemia.
psych::pairs.panels()
apresenta correlação de Pearson, histograma e regressão- O ggplot possui diversos plugins de extensão, como:
- ggaly extensão do ggplot.
- ggtext: para diversas otimizações nos textos, como múltiplas cores e a possibilidade de usar markups como markdown ou LaTex nos títulos dos gráficos.
- ggpattern: para usar hachuras ou texturas nos gráficos
- gghighlight: para realçar algo no gráfico.
- gganimate: para fazer gráficos animados
- ggradar para construir gráficos de radar
- Há esta lista mais completa, com cerca de 111 extensões registradas para o ggplot, com a curadoria do pessoal envolvido no tidyverse. Há dicas de como fazer um pacote para o ggplot.
7.5 Gráficos de visualização textual
Esta seção pretende mostar alguns gráficos mais peculiares da análise textual. Alguns exemplos de usos de gráficos ou indicação para seções posteriores, como nuvens de palavras, dedrogramas, pyramid plot, etc.
Seção sobre visualização textual em expansão
O pacote ggpage permite criar visualizações que destaca de modo panorâmico a incidência de certas palavras no texto.
library(ggpage)
library(dplyr)
str(tinderbox)
## tibble [211 × 2] (S3: tbl_df/tbl/data.frame)
## $ text: chr [1:211] "A soldier came marching along the high road: \"Left, right - left, right.\" He" "had his knapsack on his back, and a sword at his side; he had been to the wars," "and was now returning home. As he walked on, he met a very frightful-looking old" "witch in the road. Her under-lip hung quite down on her breast, and she stopped" ...
## $ book: chr [1:211] "The tinder-box" "The tinder-box" "The tinder-box" "The tinder-box" ...
ggpage_quick(tinderbox)
E usando um exemplo o próprio pacote:
%>%
tinderbox ggpage_build() %>%
mutate(long_word = stringr::str_length(word) > 8) %>%
ggpage_plot(aes(fill = long_word)) +
labs(title = "Palavras longas através do texto Tinder-box") +
scale_fill_manual(values = c("grey70", "blue"),
labels = c("8 ou menos", "9 ou mais"),
name = "Comprimento das palavras")
Há mais opções de visualizações de exemplo na página do pacote, inclusive com animações, uso de dicionários (como em análise de sentimentos). Como exemplificado no apêndice deste manual, no exemplo da CPI da Pandemia, há também o gráfico de dispersão lexical (lexical dispertion), do pacote Quanteda, que também mostra a ocorrência de certo termo ao longo do(s) texto(s).