9 Gráficos no R

9.1 Exemplos dos recursos gráficos

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 úties para termos uma idéia 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 voce vai ter que teclar ENTER para ver o próximo gráfico.

Galeria de gráficos do R

9.2 Algumas configurações de gráficos no R

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 perite 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() tmab; permite dividir a janela gráfica de forma ianda 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 poe exemplo wmf() para o sistema operacional WINDOWS. Cada uma des funçõa possuem 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 "fechado".

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)


PIC


Figura 12: Histograma gerado com opções padrão (esquerda) e modificadas (direita).


Vejamos na Figura reffig:eixos 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 abcissas e ordenadas, respectivamente.

9.3 Alguns exemplos

Gráfico com dois eixos y distintos Considere fazer um gráfico de duas variáveis de grandezas distintas, Y 1 e Y 2 contra uma mesma variável X. Isto 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 Y 1 e Y 2, 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)
  > 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
   NA's   : 37.00   NA's   :  7.0
       Month            Day          dates
   Min.   :5.000   Min.   : 1.0   First :8Jan60
   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)


PIC
Figura 13: Ilustração de gráfico com duas escalas para o eixo-y: evolução dos valores de temperatura e ozônio.