Script utilizado na aula 3 para demostrar as funções do pacote ggplot2do tidyverse para customização de gráficos.
Customização dos gráficos
Cores
Legendas
Eixos
Fundo
Texto e símbolos
Output
Salvando imagens
Painéis
Extra: gráficos nos gráficos
Instalando os pacotes
Nessa aula vamos utilizar o conjunto de dados da aula 1 e da aula 2 para demostrar as funcoes do ggplot2 do tidyverse. O primeiro passo então é carregar o pacote. Confiram a versão e atualizem para versão 2.0.0 usando a função tidyverse_update()!
Para essa aula também vamos usar alguns outros pacotes que deverão ser instalados, caso você não os tenha em sua biblioteca:
RColorBrewer
ggsci
hrbrthemes
gridExtra
egg
library(tidyverse)
Warning: package 'tidyverse' was built under R version 4.0.5
v ggplot2 3.4.2 v purrr 1.0.1
v tibble 3.2.1 v dplyr 1.1.2
v tidyr 1.3.0 v stringr 1.5.0
v readr 2.1.4 v forcats 1.0.0
-- Conflicts ------------------------------------------ tidyverse_conflicts() --
x dplyr::filter() masks stats::filter()
x dplyr::lag() masks stats::lag()
# tidyverse_update()
Carregando o conjunto de dados
Agora vamos determinar o diretório de trabalho e carregar os dados, conforme aprendemos na aula anterior. Vamos usar o conjunto de dados já manipulados, que fizemos na aula anterior e salvamos em.csv
Você deve colocar o diretório de acordo com o seu caminho no computador, e de acordo com a localização dos seus dados.
# setwd("C:/Marina/Pos-doutorado/PNPD_UFPR/Vis Man Dados/Aula 3")dados <-read.csv("Dados.csv")#dados <- readr::read_csv('https://raw.githubusercontent.com/scalonmc/VisMan/master/VisManDados/Aula1/Dados_manipulados.csv')#dados <- dados %>% rename(Phenology = `Phenological group`)
Cores
Podemos customizar a paleta padrão (default) adicionando mais uma camada!
1. Transparência (alpha)
Podemos modificar a transparência da cor com o atributo alpha.
Incluido no ggplot2, a paleta de tons de cinza pode ser usada com uma função própria: scale_fillou color_ gray(). Nesse caso, pode-se escolher o começo e o final especificando start e end:
ggplot(dados, aes(x=Phenology, y = SLA, fill = Phenology)) +geom_boxplot()+facet_wrap(~Vegetation)+scale_fill_grey()
Modificar as cores manualmente com a camada scale_color_manual() ou scale_fill_manual() informando os nomes por extenso (em inglês, entre aspas) ou informando os códigos das cores. Olhar na Tabela de referência.
Para gradientes - no caso da cor estar se referindo a uma variável contínua - usar scale_fill ou color_gradient(), gradient2() ou gradientn(). Pode definir a cor máxima e mínima e a cor dos valores de NA (o default é “grey50”)
Para mudar o formato dos símbolos a mesma lógica das cores pode ser usada. Nesse caso, a camada a ser adicionada é scale_shape_manual() e os valores inseridos de acordo com o código do formato.
A diferença entre essas duas funções é que com xlim() ou ylim() os valores que não estão no intervalo definido são excluídos. No coord_cartesian() isso não acontece.
Para contornar esse default irritante do eixo flutuante, e resolver todos nossos problemas de customização dos eixos, recomendo usar scale_x_continuous() e scale_y_continuous(). Dessa forma, com apenas uma camada, modificamos TUDO relacionado aos eixos: nome, limites, forçar a origem e intervalos (breaks).
O theme() Também pode ser usado para modificar o fundo, utilizando templates prontos, como theme_classic() ou theme_bw(), ou personalizando todos os aspectos (linhas de grade, cor do background, etc.)
Para modificar os nomes (labels) diretamente no gráfico deve-se fazer na camada de scale(): Mas atenção para não fazer confusão com seus fatores!!! Melhor mudar direto no dataset para garantir que está certo!
Warning: Using shapes for an ordinal variable is not advised
Figuras com design profissional
Vários pacotes estão disponíveis para fazer combinações de figuras montando painéis com ênfase no design. Aqui vou demostrar algumas funcionalidades do pacote patchwork() para combinar gráficos e ggtext(), que permite inserir elementos de markdown no gráfico. Veja as fontes disponíveis com o comando windowsFonts()
$serif
[1] "TT Times New Roman"
$sans
[1] "TT Arial"
$mono
[1] "TT Courier New"
#library(extrafont)#font_import()final <- boxplot.markdown +plot_annotation(title ='Diferences between phenological groups',subtitle ='Specific leaf area for **Cerrado** species',caption ='*SLA calculated as the ratio between fresh leaf area and dry leaf mass ',theme =theme(plot.title =element_markdown(size=20,family="Arial",face="italic",margin=margin(0,0,0,0.5,"cm"), colour ="purple"),plot.subtitle =element_markdown(size=15,hjust=0,family="Palatino",margin=margin(0,0,0.5,0.5,"cm"), color ="purple"),plot.caption =element_markdown(size=10,hjust=0,family="Courier"),plot.background =element_rect(fill="plum1", color=NA)))final
Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, : font
family not found in Windows font database
Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, : font
family not found in Windows font database
Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, : font
family not found in Windows font database
Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, : font
family not found in Windows font database
Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, : font
family not found in Windows font database
Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, : font
family not found in Windows font database
Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, : font
family not found in Windows font database
Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
font family not found in Windows font database
Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
font family not found in Windows font database
Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
font family not found in Windows font database
Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
font family not found in Windows font database
Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
font family not found in Windows font database