O R vem com algumas demonstrações (demos) de seus recursos “embutidas” no programa. Para listar as demos disponíveis digite na linha de comando:
> demo()
Para rodar uma delas basta colocar o nome da escolhida entre os parênteses. As demos são úteis para termos uma ideia dos recursos disponíveis no programa e para ver os comandos que devem ser utilizados.
Por exemplo, vamos rodar a demo de recursos gráficos. Note que os comandos vão aparecer na
janela de comandos e os gráficos serão automaticamente produzidos na janela gráfica. A cada passo
você vai ter que teclar ENTER para ver o próximo gráfico.
no “prompt” do programa R digite:
> demo(graphics)
Você vai ver a seguinte mensagem na tela:
demo(graphics)
---- ~~~~~~~~
Type <Return> to start :
a “demo” vai ser iniciada e uma tela gráfica irá se abrir. Na tela de comandos serão mostrados comandos que serão utilizados para gerar um gráfico seguidos da mensagem:
Hit <Return> to see next plot:
agora na tela de comandos apareceram novos comandos para produzir um novo gráfico e a mensagem:
Hit <Return> to see next plot:
para ver o código fonte (comandos) de uma demo você pode utilizar comandos como se seguem
(e de forma análoga para outras "demos":
> file.show(system.file("demo/graphics.R", package="graphics"))
> file.show(system.file("demo/plotmath.R", package="graphics"))
> file.show(system.file("demo/persp.R", package="graphics"))
Gráficos múltiplos na janela gráfica
O principal recurso para controlar o aspecto de gráficos no R é dado pela função de configuração
par(), que permite configurar formato, tamanho, subdivisões, margens, entre diversas outras opções.
Por exemplo par(mfrow=c(1,2)) divide a janela gráfica em um frame que permite acomodar dois
gráficos em uma linha e par(mfrow=c(3,4)) permite acomodar 12 gráficos em uma mesma janela
arranjados em três linhas e quatro colunas. O comando layout() também permite dividir a janela
gráfica de forma ainda mais flexível.
Gráficos em arquivos
Por default gráficos são mostrados em uma janela na tela do computador, ou seja, a tela é o
dispositivo de saída (output device) padrão para gráficos. Para produzir gráficos em arquivos basta
redirecionar o dispositivo de saída para o formato gráfico desejado. O código a seguir mostra como
gerar um um histograma de 200 amostras de uma distribuição normal padrão em um arquivo
chamado figura1.pdf em formato pdf.
> pdf("figura1.pdf") > hist(rnorm(200)) > dev.off()
Caso deseje-se o arquivo em outro formato gráfico a função adequada deve ser chamada. Por exemplo, jpeg() para formatos .jpg (or .jpeg) que são muito usados em páginas web, png(), postscript() (para gráficos em formato .ps ou .eps), entre outros. Alguns dos dispositivos gráficos são exclusivos de certos sistemas operacionais como por exemplo wmf() para o sistema operacional WINDOWS. Cada uma das funções possui argumentos adicionais que permitem controlar tamanho, resolução, entre outros atributos do arquivo gráfico. É importante notar que o comando dev.off() é compulsório devendo ser usado para que o arquivo gráfico seja encerrado.
Modificando gráficos
Gráficos no R são tipicamente construídos com opções padrão definidas pelo programa, mas podem
ser modificados ou ter elementos adicionados conforme desejado pelo usuário.
A melhor forma para entender como modificar gráficos é pensar que cada elemento pode ser
controlado por uma função, e elementos são adicionados ao gráfico para cada chamada de função
específica, de forma semelhante ao que se faria ao desenhar em um papel. Um exemplo
típico é a adição de legenda a um gráfico já feito, o que pode ser feito por legend()
NOTA: Se algo já feito deve ser mudado então é necessário repetir os comandos anteriores um a um
até chegar no que se deseja modificar. Este comportamento difere de alguns outros programas que
permitem modificar um gráfico já desenhado.
> x <- rnorm(200) > hist(x)
> hist(x, main="", axes=F, xlab="dados", ylab="frequências absolutas") > axis(1, at=seq(-2.5, 3.5, by=0.5), pos=0) > axis(2, at=seq(0,50, by=10), pos=-2.5)
Vejamos na Figura 12 um exemplo frequentemente citado por usuários. No gráfico da esquerda está o histograma dos dados de uma amostra de tamanho 200 produzido com opções padrão (default) da função hist() a partir dos seguintes comandos. No gráfico da direita nota-se que o título foi removido, o texto dos eixos foi modificado e a posição dos eixos foi alterada fazendo com que as barras do histograma sejam desenhadas junto aos eixos. Para isto na chamada de hist() passamos um valor vazio para o argumento main o que causa a remoção do título do gráfico. Os texto dos eixos são definidos por xlab e ylab. Finalmente, para modificar os eixos iniciamos removendo os eixos do gráfico inicial com axes=FALSE e depois os adicionamos com axis() na posição desejada, sendo que no primeiro argumento da função as opções 1 e 2 correspondem aos eixos das abscissas e ordenadas, respectivamente.
Gráfico com dois eixos verticais distintos Considere fazer um gráfico de duas variáveis de grandezas distintas, \(Y1\) e \(Y2\) contra uma mesma variável \(X\). Isso pode ser útil, por exemplo, para ver se as flutuações são comuns com a variação nos valores de \(X\). Gostaríamos de fazer um gráfico destes colocando eixos distintos para \(Y1\) e \(Y2\), um à esquerda e outro a direita do gráfico.
Vamos considerar o conjunto de dados airquality já disponível no R que possui medidas de Ozônio, radiação solar, velocidade do vento e temperatura em Nova York de Maio a Setembro de 1973.
> data(airquality) > head(airquality)
Ozone Solar.R Wind Temp Month Day 1 41 190 7.4 67 5 1 2 36 118 8.0 72 5 2 3 12 149 12.6 74 5 3 4 18 313 11.5 62 5 4 5 NA NA 14.3 56 5 5 6 28 NA 14.9 66 5 6
Nesses dados, as informações sobre as datas de coleta estão nas duas últimas colunas. Vamos inicialmente criar uma nova variável com a representação da data.
> require(date)
Carregando pacotes exigidos: date
> airquality$dates <- as.date(with(airquality, paste(Month, Day, "2003", sep="/"))) > summary(airquality)
Ozone Solar.R Wind Temp Min. : 1.00 Min. : 7.0 Min. : 1.700 Min. :56.00 1st Qu.: 18.00 1st Qu.:115.8 1st Qu.: 7.400 1st Qu.:72.00 Median : 31.50 Median :205.0 Median : 9.700 Median :79.00 Mean : 42.13 Mean :185.9 Mean : 9.958 Mean :77.88 3rd Qu.: 63.25 3rd Qu.:258.8 3rd Qu.:11.500 3rd Qu.:85.00 Max. :168.00 Max. :334.0 Max. :20.700 Max. :97.00 NAs :37 NAs :7 Month Day dates Min. :5.000 Min. : 1.0 First :1May2003 1st Qu.:6.000 1st Qu.: 8.0 Last :30Sep2003 Median :7.000 Median :16.0 Mean :6.993 Mean :15.8 3rd Qu.:8.000 3rd Qu.:23.0 Max. :9.000 Max. :31.0
Nos comandos a seguir criamos o gráfico da Figura 13 com as evoluções das medidas de temperatura e níveis de ozônio no período, colocando a escala de cada uma delas em um dos eixos verticais.
> par(mar=c(4,4,4,4)) > with(airquality, plot(Temp ~ dates, type="l")) > par(new=T) > with(airquality, plot(Ozone ~ dates, type="l", axes=F, frame=T, ann=F, col=2)) > axis(4, col.axis=2, col=2) > mtext("Ozone", side=4, line=3, col=2)