Anda di halaman 1dari 25

Material elaborado por: Ana Maria de Souza

Criao e Edio de Grficos no R


Fazendo Grficos no R
Aqui voc ir aprender como fazer grficos para publicao. Nesta aula, iremos passar apenas pelos grficos mais simples como grficos de disperso, de barras e box-plot, pois estes sero os grficos usados pela grande maioria dos alunos durante o curso de psgraduao. Porm, lembre-se que no R possvel construir uma variedade incrvel de grficos e figuras. Para mais exemplos basta entrar no R Graph Gallery e ver todas as possibilidades. Custo Benefcio de Fazer Grficos no R Nesta apostila voc aprender a editar os grficos e adequ-los para dissertaes, teses ou revistas cientficas. Editar grficos no R no fcil, demora tempo (pode demorar horas para fazer apenas uma figura) e muitas vezes frustrante, pois cada passo requer uma srie de ajustes. Porm, o R permite mudar quase todos os parmetros dentro de um grfico, uma liberdade que (quase) nenhum outro pacote estatstico possui. E lembre-se, bons grficos dizem mais que apenas o conjunto de dados a ser apresentado. Bons grficos mostram vrios resultados em um pequeno espao de papel, so facilmente interpretveis e podem aumentar suas chances de ter trabalhos aceitos em boas revistas cientficas. Por isso, muito importante investir bastante tempo em fazer figuras bonitas e bem explicativas.

Criando Grficos
Fazer grficos rapidamente no R fcil. Basta dizer qual tipo de grfico se deseja e quais so as variveis. H duas maneiras de se especificar as variveis Cartesiana plot(x,y) Formula plot(y~x) Ambas as formas so corretas, mas como a grande maioria das anlises feitas so no formato y~x, em vez de x,y, acaba ficando mais fcil usar y~x.
riqueza <- c(15,18,22,24,25,30,31,34,37,39,41,45) area <- c(2,4.5,6,10,30,34,50,56,60,77.5,80,85) area.cate <- rep(c("pequeno", "grande"), each=6) plot(riqueza~area) plot(area,riqueza) # o mesmo que o anterior boxplot(riqueza~area.cate) barplot(riqueza)

Material elaborado por: Ana Maria de Souza

As figuras padro (default) que o R produz no so publicveis, mas trazem toda a informao que foi usada para gerar o grfico e podem perfeitamente ser usadas para uma interpretao inicial dos resultados. O plot ou scatterplot um grfico de disperso, sendo que cada ponto no plot representa uma das rplicas (e.g. 12 rplicas, 12 pontos). Na sua forma mais simples, as legendas dos eixos vm com o nome das variveis usadas para criar o plot.

Material elaborado por: Ana Maria de Souza


Quando as variveis so categricas, o grfico padro que o R produz o boxplot ou box and whiskers plot (chamado em portugus de desenho esquemtico, desenho da caixa, ou desenho de caixa e bigode). No boxplot, a linha grossa do meio representa a mediana, a caixa representa o 1 e 3quartil, e os bigodes podem representar ou os valores mximos e mnimos, ou 1.5 vezes o valor dos quartis (aproximadamente 2 desvios padres); desenhado o que for menor. s vezes, alguns pontos so desenhados individualmente alm dos bigodes, estes so os outliers, que podem ser suprimidos com o argumento outline=F. O barplot, ou grfico de barras, mostra cada ponto da varivel especificada como uma barra. Na sua forma mais simples, so apresentados apenas os valores brutos e no h informao alguma quanto disperso dos dados. No barplot nenhum dos eixos vem com legendas (alis, o eixo x tambm no desenhado). Exerccio 1 Fazendo os Primeiros Grficos Construa plot, boxplot e barplot usando as variveis do conjunto de dados Conjunto de Dados: Dados de Biomassa de rvores de Eucalyptus Saligna, para explorar relaes entre:
dap e ht ht e tronco dap e classe dap e talhao dap ht

Note: barplot s aceita uma varivel

Editando Grficos
Aqui comea a parte mais complicada. No porque difcil mudar a forma como os grficos so feitos, mas porque para chegar num resultado final adequado requer um processo iterativo. Em outras palavras, se o objetivo mudar o tamanho da fonte, ser necessrio testar vrios tamanhos at se atingir o tamanho ideal para incluir no manuscrito e/ou tese. Existem duas maneiras de se mudar parmetros no grfico; uma por dentro do grfico, ou seja, dentro da funo plot, boxplot, ou barplot, e a outra pela funo par(). Alguns argumentos s podem ser chamados exclusivamente por uma destas maneiras. Por exemplo ylab e xlab modificam o nome (label) dos eixos e s podem ser chamadas por dentro do grfico, j outras funes s podem ser chamadas pelo par(), como por exemplo, mar que controla o tamanho das margens do grfico e mfrow que controla quantos grficos sero mostrados no mesmo dispositivo. Para que as alteraes controladas pelo par() possam surtir efeito, elas sempre devem vir antes do grfico. Se um novo dispositivo grfico no for aberto, todas as funes j controladas pelo par() continuaro valendo, mesmo que o grfico mude.

Material elaborado por: Ana Maria de Souza


Em geral, a informao que vem por ltimo a informao que o R vai tomar como verdadeira. Por exemplo, las controla a direo das legendas dos eixos ( las= 1, legendas escritas sempre na horizontal, las=3, legendas sempre na vertical), sejam os nmeros da escala ou o nome do eixo. Se o seguinte comando dado:
par(las=1) plot(riqueza~area, las=3)

O resultado final ser um grfico com legendas na vertical. Isso a princpio pode parecer sem sentido, porm imagine um caso em que h vrios grficos no mesmo dispositivo grfico e em todos os casos se deseja ter legendas horizontais, com exceo de um grfico apenas em que um dos eixos ser desenhado verticalmente. So em casos que nem este que se torna necessrio poder dar informaes conflitantes para o R. Outro caso que importante saber a funo cex. Em sua forma geral, ela se aplica ao tamanho de fonte das legendas, ttulo, pontos, entre outros. Se o seguinte comando dado:
par(cex=2) plot(riqueza~area, cex=2)

Material elaborado por: Ana Maria de Souza

O resultado final ter legendas com tamanho 2 (default=1) e pontos com tamanho 4. Isto ocorre pois par(cex=2) tem a funo geral de aumentar todas as fontes e pontos, enquanto que no plot(cex=2) tem a funo de aumentar s o pontos. E quando neste caso especfico, em vez das informaes entrarem em conflito, como no caso anterior, elas se multiplicam. Exerccio 2 Aprendendo a Editar Grficos Entre no R e digite: ?plot Agora, usando as variveis:
riqueza <- c(15,18,22,24,25,30,31,34,37,39,41,45) area <- c(2,4.5,6,10,30,34,50,56,60,77.5,80,85)

Mude: O nome do eixo x para Tamanho da Ilha (ha) O nome do eixo y para Riqueza de Espcies

Material elaborado por: Ana Maria de Souza


O ttulo do grfico para Aves das Ilhas Samoa Agora entre no: ?par Usando o mesmo grfico anterior, mude: O tipo de ponto (numero de 0 a 25) O tamanho dos pontos e legendas A direo da escala do grfico (para ficar tudo na horizontal) O tipo de fonte das legendas (para ficar tudo como em Times New Roman dica= serif) Apesar das pginas de ajuda do R no serem muito amigveis no comeo, preciso ter calma e aprender a procurar a informao desejada. A pgina do par() uma das mais procuradas por todos que esto fazendo grficos no R, e por isso importante que se gaste um tempo para aprender qual tipo de informao ela fornece, onde est a informao, e como mudar os parmetros do R. par() DICA No comeo, quando ainda no se conhece direito todas as funes do par() aconselhvel que se imprima a pgina de ajuda para que se possa visualizar todas os argumentos. Existem dois argumentos do par() muito importantes e que so usadas quase 100% das vezes. Um, par(mfrow=c()) controla quantas figuras sero desenhadas dentro de um mesmo dispositivo. O vetor contido dentro da funo mfrow=() controla o numero de grficos que sero desenhados no eixo x (1 nmero) e no eixo y (2 nmero). O outro, o par(mar=c()) controla o tamanho das margens do grfico e como a figura ficar disposta dentro do dispositivo. O vetor contido dentro da funo mar=(), controla as posies das margens, sendo que o 1 numero controla a margem da parte de baixo do grfico, o 2 controla a margem do lado esquerdo, o 3 numero controla a parte de cima e o 4 numero controla o tamanho da margem do lado direito do grfico. Dica: as figuras abaixo foram preenchidas de cinza para facilitar a visualizao com o parmetro par(bg=gray93) Exemplos de par(mfrow=c())
par(mfrow=c(2,1))

Material elaborado por: Ana Maria de Souza


plot(riqueza~area) boxplot(riqueza~area.cate)

par(mfrow=c(1,2)) plot(riqueza~area) boxplot(riqueza~area.cate)

Material elaborado por: Ana Maria de Souza

Exemplos de par(mar=c())
par(mfrow=c(2,1)) par(mar=c(4,14,2,6)) plot(riqueza~area) boxplot(riqueza~area.cate)

Material elaborado por: Ana Maria de Souza

par(mfrow=c(1,2)) par(mar=c(14,4,8,2)) plot(riqueza~area) boxplot(riqueza~area.cate)

Material elaborado por: Ana Maria de Souza

par(mfrow=c(1,2)) par(mar=c(8,4,8,1)) plot(riqueza~area) par(mar=c(14,2,4,0.5)) boxplot(riqueza~area.cate)

Material elaborado por: Ana Maria de Souza

Diferenas Entre Tipos De Grfico


Infelizmente, a forma como se muda argumentos do plot(), boxplot() e barplot() no sempre a mesma, ou seja, comandos que funcionam perfeitamente para o plot() podem no produzir efeito algum no boxplot(), e vice-versa. Esta caracterstica, de fato, atrapalha um pouco, mas assim que se acostuma fica mais fcil. H duas dicas para resolver este problema: (i) tente sempre jogar os argumentos para o par() pois s vezes eles podem no funcionar se chamadas por dentro do plot(), boxplot(), etc, mas iro funcionar pelo par(); (ii) descubra o nome em ingls do parmetro que se quer mudar ( label, tick, legend) e jogue no Google legend boxplot. Com certeza, algum j teve este mesmo problema, e entrando dentro da lista do R (as diversas que existem) ou em aulas disponibilizadas na internet, com certeza se acha uma soluo. Exerccio 3 Mudando diferentes Grficos Com as variveis:
riqueza <- c(15,18,22,24,25,30,31,34,37,39,41,45) area <- c(2,4.5,6,10,30,34,50,56,60,77.5,80,85) area.cate <- rep(c(pequeno, grande), each=6)

Material elaborado por: Ana Maria de Souza


Crie:
plot(riqueza~area)

E agora:
plot(riqueza~area, bty="l", tcl=0.3)

Perecebeu o que mudou? Agora tente:


boxplot(riqueza~area.cate, bty=l, tcl=0.3)

O que aconteceu? E agora?


par(bty=l) par(tcl=0.3) boxplot(riqueza~area.cate)

Viu s?

Inserindo mais Informaes em Grficos


Existem diversas informaes que se pode incluir em um grfico. Pode-se colocar uma letra para mostrar que este o painel a e ao lado o painel b; pode-se colocar asteriscos para mostrar quais relaes so significativas; pode-se desenhar flechas, outros pontos, uma infinidade de coisas. Tudo isto pode ser feito, mas requer funes comandos separados daqueles j passados pelo par() e plot(), boxplot() ou barplot(). Dentre as vrias funes existentes para se inserir informaes em grficos, existem sete que so bastante teis. Use: Exerccio 4 Usando as variveis:
riqueza <- c(15,18,22,24,25,30,31,34,37,39,41,45) area <- c(2,4.5,6,10,30,34,50,56,60,77.5,80,85) abundancia <- rev(riqueza)

Crie grficos inserindo os parmetros abaixo.


lines()

Para inserir linhas retas ou curvas no-paramtricas (como lowess, loess, gam, etc).
plot(riqueza~area)

Material elaborado por: Ana Maria de Souza


lines(lowess(area, riqueza))

abline()

Para inserir linhas de tendncia criadas a partir de um modelo linear. Para isso primeiro necessrio criar o modelo, para depois criar a linha.
model <- lm(riqueza~area) plot(riqueza~area) abline(model)

Material elaborado por: Ana Maria de Souza

Com a funo abline voc pode tambm inserir uma linha reta com intercepto e inclinao definidos por voc, com os dois primeiros argumentos:
plot(riqueza~area) abline(15,0.4)

Material elaborado por: Ana Maria de Souza

A funo abline tambm serve para acrescentar linhas verticais e horizontais, com os argumentos v e h. No cdigo abaixo traamos estas linhas passando pelas mdias das duas variveis do diagrama de disperso:
plot(riqueza~area) abline(v=mean(area)) abline(h=mean(riqueza))

Material elaborado por: Ana Maria de Souza

Voc sabia? A reta da regresso linear simples sempre passa pelo ponto que a interseo destas duas linhas.
text()

Para inserir texto dentro do grfico. O texto pode ser uma letra, um smbolo (muito usado para mostrar diferenciar classes no grfico), uma palavra ou at mesmo uma frase.
plot(riqueza~area) text(20,40,"texto")

Material elaborado por: Ana Maria de Souza

mtext()

Este comando acrescenta texto nas margens do grfico ou da janela grfica. Seu uso mais frequente inserir legendas dos eixos. Apesar de ser possvel controlar as legendas por dentro das funes plot, boxplot e barplot, o numero de parmetros que se pode mudar limitado. Quando se deseja um controle mais fino dos parmetros, como posio, alinhamento, cor, tamanho da fonte, etc, necessrio usar mtext().
plot(riqueza~area) mtext("legenda no lado errado", side=4, line=0.9, at=20,cex=2, family="serif")

Material elaborado por: Ana Maria de Souza

par(new=TRUE)

Para sobrepor um novo grfico a um grfico j existente. Em vez de criar grficos lado-alado, como em par(mfrow=c()), este argumento ir desenhar o novo grfico sobre o grfico anterior.
plot(riqueza~area) par(new=TRUE) plot(abundancia~area)

Material elaborado por: Ana Maria de Souza

Mas reparem que aqui ser necessrio alguns ajustes para suprimir eixos e legendas. Em muitos casos quando se est inserindo informaes ser necessrio suprimir parmetros.
axis()

Para se inserir um eixo novo. Esta funo bastante usada nos casos em que se deseja ter dois grfico dentro de uma mesma figura (ver par(new=TRUE)), ou ento se deseja controlar muitos dos parmetros dos eixos (como em mtext()).
plot(riqueza~area) par(new=TRUE) plot(abundancia~area, axes=FALSE, ann=FALSE, pch=16) axis(4)

Material elaborado por: Ana Maria de Souza

Aqui no caso ser necessrio usar axes=F para suprimir a criao dos eixos do grfico inicial de abundncia e ann=F para suprimir a legenda de abundncia do lado direito. Para para diferenciar os pontos entre os dois plots usar pch=16, ou qualquer outro nmero. Para inserir a legenda de abundncia do lado direito ser necessrio usar mtext(), mas da ser necessrio mudar outros parmetros como distncia da margem.
arrows(), rect(), polygon()

Para inserir flechas ou barras de erros use arrows(). J para inserir retngulos, polgonos e outros formatos use rect() e polygon().
plot(riqueza~area) rect(20,20,40,40)

Material elaborado por: Ana Maria de Souza

Salvando Grficos
Aps ter feitos todos os grficos desejados, possvel salv-los em vrios formatos, como jpeg, png, postscript, pdf. Consulte a ajuda do pacote grDevices para a lista completa e mais informaes. Aps chegar ao grfico final, ajustando todos os parmetros desejados, voc pode usar a funo do R para criar o arquivo no formato desejado. H funes para cada formato de arquivo, todas elas com o primeiro argumento filename, que especifica o nome do arquivo a salvar. Para criar um arquivo jpg, por exemplo, h a funo jpeg:
jpeg(filename = "Algumnome.jpg")

Feito isso, o R agora ir enviar todos os resultados de comandos grficos para este arquivo, que fechado com a funo dev.off(). Exemplo
jpeg(filename = "Rplotaula.jpg", width = 480, height = 480, units = "px", pointsize = 12, quality = 100, bg = "white", res = NA, restoreConsole = TRUE)

Material elaborado por: Ana Maria de Souza


par(mfrow=c(1,2)) par(mar=c(14,4,8,2)) plot(riqueza~area) boxplot(riqueza~area.cate) dev.off()

Quatro Fatos Importantes sobre Arquivos de Figuras (e uma dica)


Seu arquivo de figura s ter os parmetros desejados se voc executar todo o cdigo aps abrir o arquivo da figura, incluindo todos os comandos par(). Seu arquivo de figura s ser salvo quando voc executar o comando dev.off(). At que isso acontea, todos os resultados de comandos grficos continuaro a ser enviados para este arquivo. Por isso, se voc criar dois grficos, o segundo substituir o primeiro. Ao executar o comando dev.off(), o arquivo ser gravado no diretrio de trabalho. Se voc quiser grav-lo em outro lugar, ter que especificar o caminho completo no comando de criao do arquivo, no argumento filename. DICA Para gravar uma sequncia de grficos sem precisar dar vrios comandos de abertura de arquivos, use no argumento do nome do arquivo a notao nome%[nmero]d.extenso, onde [nmero] normalmente so os nmeros 01, 02 ou 03:
png("meugrafico%02d.png")

Com essa notao os grficos gerados sero gravados com uma numerao sequencial, que tem [numero] algarismos. Por exemplo [nmero] = 01 indica numerao sequencial de um algarismo, e voc pode gravar at nove grficos (meugrafico1.png a meugrafico9.png). Se [nmero] = 02 a numerao sequencial tem dois algarismos, portanto voc pode gravar at 99 figuras (meugrafico01.png a meugrafico99.png). Se voc gera mais grficos do que este valor mximo, os excedentes sobrepem os primeiros, na sequncia. Para evitar isso, normalmente usamos [nmero] = 03, que permite gerar at 999 arquivos, o que mais do que suficiente na maioria dos casos. O padro das funes de arquivos grficos do tipo bitmap no R gerar arquivos com o nome Rplotxxx.extenso, com numerao sequencial com 3 algarismos, ou seja:
bmp(filename = "Rplot%03d.bmp") jpeg(filename = "Rplot%03d.jpg") png(filename = "Rplot%03d.png") tiff(filename = "Rplot%03d.bmp")

Para arquivos do tipo postscript e pdf o padro um pouco diferente, consulte a ajuda.

Dispositivos Grficos

Material elaborado por: Ana Maria de Souza


Para operar bem com arquivos grficos no R, preciso entender o conceito de dispositivo grfico (graphical device). Um dispositivo (device) qualquer unidade de entrada (I=input) ou sada (O=output) em um computador. O teclado um dispositivo de entrada (I), o monitor de vdeo de sada (O) e o disco rgido de ambos (I/O). Em termos bem gerais, o R usa o padro de sistemas da famlia UNIX e abre arquivos especiais (device files) para controlar cada dispositivo de sada grfica 1). Na prtica podemos podemos pensar que o R cria uma rota para cada dispositivo, e que voc pode ter vrias destas rotas abertas ao mesmo tempo, mas apenas uma ativa por vez. Abrindo e trocando de dispositivos Quando executamos um comando com resultado grfico, o padro do R enviar seu resultado para um dispositivo de tela. Se no h nenhum aberto, este dispositivo de tela ser aberto. Por exemplo, se iniciamos o R e executamos um comando plot:
plot(riqueza~area)

uma janela se abrir para exibir a figura nele. Este um dispositivo grfico de tela, normalmente do tipo X11 em sistemas UNIX, e do tipo windows em sistemas Microsoft Windows. possvel tambm abrir mais dispositivos de tela, com o comando:
> x11()

que funciona nos dois tipos de sistemas operacionais. Ao executar este comando, uma nova janela grfica em branco se abrir, na margem superior da qual voc ver a indicao de que agora este o dispositivo ativo:

Material elaborado por: Ana Maria de Souza


O dispositivo ativo que receber o resultado de todos os comandos grficos. Assim,voc pode criar um novo grfico neste dispositivo, ou alterar seus parmetros, sem afetar o grfico que est na outra janela. Quando voc abre um novo dispositivo, os parmetros so os mantidos por padro no R, que voc obtm com o comando par(). Para mud-los, preciso usar o comando par, como explicado nas sees anteriores. Para trocar de dispositivo ativo, use a funo dev.set(which=), cujo o argumento which o nmero do dispositivo que voc quer tornar ativo. Por exemplo, para voltar janela do dispositivo 2 execute:
> dev.set(which=2)

Qual o Dispositivo Ativo? Enquanto temos apenas dispositivos de tela abertos, fcil descobrir qual o ativo, pois esta informao exibida na janela de cada um. Mas quando abrimos um ou mais dispositivos de arquivo, como:
> png("figura%02d.png") > pdf("figura%02d.pdf")

fcil se perder. Para que isso no acontea h as funes dev.list, para listar todos os dispositivos abertos, e dev.cur, que retorna o dispositivo ativo:
> dev.list() windows pdf 2 5 > dev.cur() pdf 5 > dev.set(3) windows 3 > dev.cur() windows 3 windows png:figura%02d.png 3 4

Voc fecha um dispositivo com o comando dev.off(which=n), em que n o nmero do dispositivo. Se este argumento omitido, o valor padro o dispositivo ativo:
> dev.list() windows pdf 2 5 > dev.cur() pdf 5 > dev.off() windows png:figura%02d.png 3 4

Material elaborado por: Ana Maria de Souza


windows 2 > dev.list() windows 2 > dev.cur() windows 2

windows png:figura%02d.png 3 4

Quando o dispositivo ativo fechado, o seguinte na lista de dispositivos torna-se o ativo. O ltimo comando acima ilustra isto. Exerccio 5 Crie diferentes grficos em diferentes dispositivos. Por fim salve-os em jpeg. Para saber mais como salvar grficos em jpeg use a funo ?jpeg.

Anda mungkin juga menyukai