Gráficos com ggplot2
O pacote ggplot2</a >, criado por Hadley Wickham, oferece uma linguagem gráfica poderosa para a criação de gráficos elegantes e complexos. Sua popularidade na comunidade R explodiu nos últimos anos. Originalmente baseado no livro de Leland Wilkinson The Grammar of Graphics</a >, o ggplot2 permite que você crie gráficos que representem dados numéricos e categóricos univariados e multivariados de maneira simples. O agrupamento pode ser representado por cor, símbolo, tamanho e transparência. A criação de parcelas de treliça (ou seja, condicionamento) é relativamente simples.
Dominar a linguagem ggplot2 pode ser um desafio (consulte a seção Indo além abaixo para obter recursos úteis). Há uma função auxiliar chamada qplot() (para plotagem rápida) que pode ocultar grande parte dessa complexidade ao criar gráficos padrão.
qplot()
A função qplot() pode ser usada para criar os tipos de gráficos mais comuns. Embora não exponha todo o poder do ggplot, ele pode criar uma grande variedade de gráficos úteis. O formato é o seguinte:
qplot(x, y, data=, color=, shape=, size=, alpha=, geom=, method=,
formula=, facets=, xlim=, ylim= xlab=, ylab=, main=, sub=)
onde estão as opções:
opção | descrição |
alfa | Transparência alfa para elementos sobrepostos expressa como uma fração entre 0 (transparência total) e 1 (opacidade total) |
cor, forma, tamanho, preenchimento | Associa os níveis da variável à cor, forma ou tamanho do símbolo. Para gráficos de linha, a cor associa os níveis de uma variável à cor da linha. Para gráficos de densidade e de caixa, o preenchimento associa as cores de preenchimento a uma variável. As legendas são desenhadas automaticamente. |
dados | Especifica um quadro de dados |
facets | Cria um gráfico de treliça especificando variáveis de condicionamento. Seu valor é expresso como rowvar ~ colvar. Para criar gráficos de treliça com base em uma única variável de condicionamento, use rowvar</em |
geom | Especifica os objetos geométricos que definem o tipo de gráfico. A opção geom é expressa como um vetor de caracteres com uma ou mais entradas. Os valores geom incluem "point" (ponto), "smooth" (suave), "boxplot" (gráfico de caixa), "line" (linha), "histogram" (histograma), "density" (densidade), "bar" (barra) e "jitter" (tremor). |
principal, secundário | Vetores de caracteres que especificam o título e o subtítulo |
método, fórmula | Se geom="smooth", uma linha de ajuste de loess e limites de confiança serão adicionados por padrão. Quando o número de observações é maior que 1.000, um algoritmo de suavização mais eficiente é empregado. Os métodos incluem "lm" para regressão, "gam" para modelos aditivos generalizados e "rlm" para regressão robusta. O parâmetro da fórmula fornece a forma do ajuste. Por exemplo, para adicionar linhas de regressão linear simples, você especificaria geom="smooth", method="lm", formula=y |
x, y | Especifica as variáveis colocadas nos eixos horizontal e vertical. Para gráficos univariados (por exemplo, histogramas), omita y |
xlab, ylab | Vetores de caracteres que especificam os rótulos dos eixos horizontal e vertical |
xlim,ylim | Vetores numéricos de dois elementos que fornecem os valores mínimo e máximo para os eixos horizontal e vertical, respectivamente. |
Observações:
- No momento, o ggplot2 não pode ser usado para criar gráficos 3D ou gráficos em mosaico.
- Use I(valor) para indicar um valor específico. Por exemplo, size=z faz com que o tamanho dos pontos ou linhas plotados seja proporcional aos valores de uma variável z. Por outro lado, size=I(3) define cada ponto ou linha como três vezes o tamanho padrão.
Aqui estão alguns exemplos usando dados automotivos (quilometragem do carro, peso, número de marchas, número de cilindros etc.) contidos no quadro de dados mtcars.
# ggplot2 examples
library(ggplot2)
# create factors with value labels
mtcars$gear <- factor(mtcars$gear,levels=c(3,4,5),
labels=c("3gears","4gears","5gears"))
mtcars$am <- factor(mtcars$am,levels=c(0,1),
labels=c("Automatic","Manual"))
mtcars$cyl <- factor(mtcars$cyl,levels=c(4,6,8),
labels=c("4cyl","6cyl","8cyl"))
# Kernel density plots for mpg
# grouped by number of gears (indicated by color)
qplot(mpg, data=mtcars, geom="density", fill=gear, alpha=I(.5),
main="Distribution of Gas Milage", xlab="Miles Per Gallon",
ylab="Density")
# Scatterplot of mpg vs. hp for each combination of gears and cylinders
# in each facet, transmittion type is represented by shape and color
qplot(hp, mpg, data=mtcars, shape=am, color=am,
facets=gear~cyl, size=I(3),
xlab="Horsepower", ylab="Miles per Gallon")
# Separate regressions of mpg on weight for each number of cylinders
qplot(wt, mpg, data=mtcars, geom=c("point", "smooth"),
method="lm", formula=y~x, color=cyl,
main="Regression of MPG on Weight",
xlab="Weight", ylab="Miles per Gallon")
# Boxplots of mpg by number of gears
# observations (points) are overlayed and jittered
qplot(gear, mpg, data=mtcars, geom=c("boxplot", "jitter"),
fill=gear, main="Mileage by Gear Number",
xlab="", ylab="Miles per Gallon")
Personalizando os gráficos do ggplot2
Diferentemente dos gráficos do R básico, os gráficos do ggplot2 não são afetados por muitas das opções definidas na função par( ). Você pode modificá-los usando a função theme() e adicionando parâmetros gráficos na função qplot(). Para obter maior controle, use ggplot() e outras funções fornecidas pelo pacote. Observe que as funções do ggplot2 podem ser encadeadas com sinais de "+" para gerar o gráfico final.
library(ggplot2)
p <- qplot(hp, mpg, data=mtcars, shape=am, color=am,
facets=gear~cyl, main="Scatterplots of MPG vs. Horsepower",
xlab="Horsepower", ylab="Miles per Gallon")
# White background and black grid lines
p + theme_bw()
# Large brown bold italics labels
# and legend placed at top of plot
p + theme(axis.title=element_text(face="bold.italic",
size="12", color="brown"), legend.position="top")
Indo além
Aqui, apenas arranhamos a superfície. Para saber mais, consulte esta útil folha de dicas sobre ggplot</a > e o excelente siteCookbook for R de Winston Chang . Embora um pouco desatualizado, ggplot2: Elegant Graphics for Data Anaysis</a > ainda é o livro definitivo sobre esse assunto.
Para praticar
Experimente o primeiro capítulo gratuito deste tutorial interativo sobre ggplot2.</a >