Criando Gráficos Básicos com R
Introdução
Quem trabalha com R, principalmente quem está começando, tem dificuldade para gerar gráficos no. Neste "artigo" traremos as noções básicas da criação de gráficos com R, usando os pacotes plot e ggplot2.
Para usar o pacote plot não há necessidade de carregar a biblioteca (Library), pois esta já é padrão do R, mas para usar ggplot2 há a necessidade de carrega-la atavés do comando library(ggthemes). Caso não tenha ela instalada processa da seguinte forma: insira o comando install.packages("ggthemes").
Para saber como trabalhar com R, se você é marinheiro de primeira viagem recomendo esse artigo aqui do TabNews Linguagem R, nuances dessa maravilha.
Biblioteca ou pacotes
Serão utilizados o seguintes pacotes plot, ggplot2 e o ggthemes. No script serão carregados os pacotes individualmente, por exemplo, library("ggplot2"), library("ggthemes"), library("vegan").
Função plot()
Parâmetros de plot()
Função genérica para pltagem de objetos do R.
plot(x, y, xlab, ylab, type, main, sub, asp)
x, y
Vetores numéricos: x e y devem possuir mesmo tamanho (na=nb.)
xlab, ylab
São os títulos a serem exibidos nos eixos x e y, respectivamente.
type
São os tipos de gráficos a serem exibidos, como segue:
- "p" for points,
- "l" for lines,
- "b" for both,
- "c" for the lines part alone of "b",
- "o" for both ‘overplotted’,
- "h" for ‘histogram’ like (or ‘high-density’) vertical lines,
- "s" for stair steps,
- "S" for other steps,
- "n" for no plotting.
main
Especifica o título do gráfico, se omitido nada será exibido.
sub
Especifica o subtítulo do gráfico, se omitido nada será exibido.
asp
Numérico, dando a razão do aspecto entre y / x.
Script do R para função plot()
O script do R, tem os seguintes dados:
## Cria os conjuntos de dados x e y
##Conjunto de dados X
cx=c(12,15,45,32,36,32,21,21,14,52)
##Conjunto de dados Y
cy=c(5400,2500,3600,900,1500,1100,1400,1800,1800,1100)
##Converte o conjunto de dados cx e xy em uma data frame (matriz)
Data=data.frame(cx,cy)
##Plota o gráfico. Detalhe apara a função sort(), que
plot(sort(cx),sort(cy), xlab="Idade", ylab="Renda", type="o", main="Idade vs renda",sub="Ano de 2016")
Resultado
Figura 1. Gráfico criado a partir da função plot().
Função ggplot
O pacote ggplot2 possui maior poder quando comparado com a função plot(). Além de mais opções a estética dos gráficos são melhores, pois permite adicionar vários itens a mais, como por exemplo, linhas de tendência linear, polinomial, logaritmica.
Parâmetros de ggplot().
ggplot(data = NULL, mapping = aes(), ..., environment = parent.frame())
data
Refere-se ao um conjunto de dados do tipo data.frame().
mapping
Lista padrão de mapeamentos estéticos (aesthetic) a serem usados para na plotagem. Se não especificado, deve ser fornecido em cada camada adicionada ao gráfico. Usa-se aes() (veja mais detalhes em Construct aesthetic mappings).
environment
Se uma variável definida no mapeamento estético (aesthetic) não for encontrada nos dados, ggplot() procurará por ele neste ambiente. O padrão é usar o ambiente no qual ggplot() é chamado.
Parâmetro stat_smooth
Usaremos o pacote adicional ggthemes(), para permitir dar cores diferenciadas ao gráfico.
Pacote ggthemes
São 14 temas que podem ser explorados, conforme segue abaixo Arnold, 2017
- theme_base: a theme resembling the default base graphics in R. See also theme_par.
- theme_calc: a theme based on LibreOffice Calc.
- theme_economist: a theme based on the plots in the The Economist magazine.
- theme_excel: a theme replicating the classic ugly gray charts in Excel
- theme_few: theme from Stephen Few’s “Practical Rules for Using Color in Charts”.
- theme_fivethirtyeight: a theme based on the plots at fivethirtyeight.com.
- theme_gdocs: a theme based on Google Docs.
- theme_hc: a theme based on Highcharts JS.
- theme_par: a theme that uses the current values of the base graphics parameters in par.
- theme_pander: a theme to use with the pander package.
- theme_solarized: a theme using the solarized color palette.
- theme_stata: themes based on Stata graph schemes.
- theme_tufte: a minimal ink theme based on Tufte’s The Visual Display of Quantitative Information.
- theme_wsj: a theme based on the plots in the The Wall Street Journal.
Além dos 13 esquemas de cores, como segue:
- scale_colour_calc, scale_shape_calc: color and shape palettes from LibreOffice Calc.
- scale_colour_colorblind: Colorblind.
- scale_colour_economist: colors used in plots in plots in The Economist.
- scale_colour_excel: colors from new and old Excel.
- scale_colour_few: color palettes from Stephen Few’s “Practical Rules for Using Color in Charts”.
- scale_colour_gdocs: color palette from Google Docs.
- scale_colour_hc: a theme based on Highcharts JS.
- scale_colour_solarized: Solarized colors
- scale_colour_stata, scale_shapes_stata, scale_linetype_stata: color, shape, and linetype palettes from Stata graph schemes.
- scale_colour_tableau, scale_shape_tableau: color and shape palettes from Tableau.
- scale_colour_pander, scale_fill_pander: scales to use with the pander package.
- scale_colour_ptol, scale_fill_ptol: color palettes from Paul Tol’s Colour Schemes
- scale_shape_cleveland, scale_shape_tremmel, scale_shape_circlefill: shape scales from classic works in visual perception: Cleveland, Tremmel (1995), and Lewandowsky and Spence (1989) Arnold, 2017.
Script para a função ggplot
##Carrega o pacote ggplot2 e ggthemes
library(ggplot2)
library(ggthemes)
ggplot(Data, aes(x=cx,y=cy)) + geom_point() +
stat_smooth(method = 'lm', aes(colour = 'Linear'), se = FALSE) +
stat_smooth(method = 'lm', formula = y ~ poly(x,2), aes(colour = 'Polynomial'), se= FALSE) +
stat_smooth(method = 'nls', formula = y ~ a * log(x) +b, aes(colour = 'Logarithmic'), se = FALSE, start = list(a=1,b=1)) +
stat_smooth(method = 'nls', formula = y ~ a*exp(b *x), aes(colour = 'Exponential'), se = FALSE,start = list(a=1,b=1)) +
theme_base() + scale_colour_brewer(name = 'Trendline', palette = 'Set2') +
stat_smooth(method="loess",se=FALSE)
Resultado
Figura 2. Gráfico gerado pelo pacote ggplot(), como tema theme_base() e scale_colour_brewer().
Figura 3. Gráfico gerado pelo pacote ggplot(), como tema theme_economist() e scale_colour_brewer().
Figura 4. Gráfico gerado pelo pacote ggplot(), como tema theme_gdocs() e scale_colour_brewer().
Figura 5. Gráfico gerado pelo pacote ggplot(), como tema theme_solarized() e scale_colour_brewer().
Figura 6. Gráfico gerado pelo pacote ggplot(), como tema theme_solarized(light=FALSE), como dark e scale_colour_solarized("red",name = 'Trendline').
Para maiores detalhes sobre stat_smoth() ou geom_point() ou* geom_smoth()*, consulte o trabalho de Wickham & Chang, 2016.
Considerações Finais
Esta são apenas algumas das forma de como gerar gráficos no R, mas não são asúnicas, gráficos mais complexo são possíveis no R, mas estudos mais aprofundados são requeridos para isso. Portanot, experiência e prática são fundamentatis para esse pleito.
Referências
Arnold, J.B., 2017. Introduction to ggthemes. ggthemes Package. Disponível em: https://cran.r-project.org/web/packages/ggthemes/vignettes/ggthemes.html
RDocumentation: ggplot, version 2.2.1 .Disponível em: https://www.rdocumentation.org/packages/ggplot2/versions/2.2.1/topics/ggplot
RDocumentation: plot, version 3.4.0 .Disponível em: https://www.rdocumentation.org/packages/graphics/versions/3.4.0/topics/plot
Wickham, H. & W. Chang, 2016. Create Elegant Data Visualisations Using the Grammar of Graphics - Package ‘ggplot2’ version 2.2.1, 189 p. disponível em: https://cran.r-project.org/web/packages/ggplot2/ggplot2.pdf