Diferenças
Aqui você vê as diferenças entre duas revisões dessa página.
| — | 03_apostila:05a-graficos [2023/08/22 21:04] (atual) – criada - edição externa 127.0.0.1 | ||
|---|---|---|---|
| Linha 1: | Linha 1: | ||
| + | <WRAP tabs> | ||
| + | * [[02_tutoriais: | ||
| + | * [[01_curso_atual: | ||
| + | * [[03_apostila: | ||
| + | </ | ||
| + | ====== 5a. Criação e Edição de Gráficos no R====== | ||
| + | |||
| + | =====Fazendo Gráficos no R===== | ||
| + | Aqui você irá aprender como fazer gráficos para publicação. Nesta aula, iremos passar apenas pelos gráficos mais simples como **gráficos de dispersão, de barras e box-plot**, pois estes serão os gráficos usados pela grande maioria dos alunos durante o curso de pós-graduação. Porém, lembre-se que no R é possível construir uma variedade incrível de gráficos e figuras. Para mais exemplos basta entrar no [[http:// | ||
| + | | R Graph Gallery]] e ver as possibilidades. | ||
| + | |||
| + | ===Custo Benefício de Fazer Gráficos no R=== | ||
| + | Nesta apostila você aprenderá a editar os gráficos e adequá-los para dissertações, | ||
| + | |||
| + | |||
| + | |||
| + | =====Criando Gráficos===== | ||
| + | |||
| + | Fazer gráficos __rapidamente__ no R é fácil. Basta dizer qual tipo de gráfico se deseja e quais são as variáveis. | ||
| + | |||
| + | <box center red | **Há duas maneiras de se especificar as variáveis**> | ||
| + | |||
| + | Cartesiana – plot(x,y) | ||
| + | |||
| + | Formula – plot(y~x) | ||
| + | |||
| + | Ambas as formas são corretas, mas como a grande maioria das análises feitas são no formato y~x, em vez de x,y, acaba ficando mais fácil usar y~x. | ||
| + | |||
| + | </ | ||
| + | |||
| + | |||
| + | <code rsplus> | ||
| + | |||
| + | riqueza <- c(15, | ||
| + | area <- c(2, | ||
| + | area.cate <- rep(c(" | ||
| + | |||
| + | plot(riqueza ~ area) | ||
| + | plot(area, riqueza) # o mesmo que o anterior | ||
| + | boxplot(riqueza ~ area.cate, col = " | ||
| + | barplot(riqueza) | ||
| + | |||
| + | </ | ||
| + | |||
| + | {{: | ||
| + | {{: | ||
| + | {{: | ||
| + | |||
| + | |||
| + | As figuras padrão ('' | ||
| + | |||
| + | |||
| + | Quando as variáveis são categóricas, | ||
| + | |||
| + | |||
| + | O barplot, ou gráfico de barras, mostra cada ponto da variável especificada como uma barra. Na sua forma mais simples, são apresentados apenas os valores brutos e não há informação alguma quanto à dispersão dos dados. No barplot nenhum dos eixos vem com legendas (aliás, o eixo x também não é desenhado). | ||
| + | |||
| + | <box center red 70% | **Exercício 1 – Fazendo os Primeiros Gráficos** > | ||
| + | |||
| + | Construa “plot”, boxplot e barplot usando as variáveis do conjunto de dados [[: | ||
| + | dap e ht | ||
| + | ht e tronco | ||
| + | dap e classe | ||
| + | dap e talhao | ||
| + | dap | ||
| + | ht | ||
| + | |||
| + | Note: '' | ||
| + | </ | ||
| + | |||
| + | |||
| + | =====Editando Gráficos===== | ||
| + | |||
| + | Aqui começa a parte mais complicada. Não porque é difícil mudar a forma como os gráficos são 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á necessário testar vários tamanhos até se atingir o " | ||
| + | |||
| + | Existem duas maneiras de se mudar parâmetros no gráfico; uma é por dentro do gráfico, ou seja, dentro da função '' | ||
| + | |||
| + | Para que as alterações controladas pelo '' | ||
| + | |||
| + | Em geral, a informação que vem por último é a informação que o R vai tomar como verdadeira. Por exemplo, '' | ||
| + | |||
| + | |||
| + | |||
| + | <code rsplus> | ||
| + | |||
| + | | ||
| + | | ||
| + | |||
| + | </ | ||
| + | |||
| + | {{: | ||
| + | |||
| + | O resultado final será um gráfico com legendas na vertical. Isso a princípio pode parecer sem sentido, porém imagine um caso em que há vários gráficos no mesmo dispositivo gráfico e em todos os casos se deseja ter legendas horizontais, | ||
| + | |||
| + | |||
| + | Outro caso que é importante saber é a função '' | ||
| + | |||
| + | <code rsplus> | ||
| + | |||
| + | par(cex=2) | ||
| + | plot(riqueza~area, | ||
| + | |||
| + | |||
| + | </ | ||
| + | |||
| + | {{: | ||
| + | |||
| + | O resultado final terá legendas com tamanho 2 (default=1) e pontos com tamanho 4. Isto ocorre pois '' | ||
| + | |||
| + | |||
| + | |||
| + | <box center red 80%| **Exercício 2 – Aprendendo a Editar Gráficos** > | ||
| + | |||
| + | **Entre no R e digite:** | ||
| + | |||
| + | ?plot | ||
| + | |||
| + | Agora, usando as variáveis: | ||
| + | |||
| + | riqueza <- c(15, | ||
| + | area <- c(2, | ||
| + | |||
| + | Mude: | ||
| + | |||
| + | O nome do eixo x para “Tamanho da Ilha (ha)” | ||
| + | |||
| + | O nome do eixo y para “Riqueza de Espécies” | ||
| + | |||
| + | O título do gráfico para “Aves das Ilhas Samoa” | ||
| + | |||
| + | |||
| + | **Agora entre no:** | ||
| + | |||
| + | ?par | ||
| + | |||
| + | Usando o mesmo gráfico anterior, mude: | ||
| + | |||
| + | O tipo de ponto (numero de 0 a 25) | ||
| + | |||
| + | O tamanho dos pontos e legendas | ||
| + | |||
| + | A direção da escala do gráfico (para ficar tudo na horizontal) | ||
| + | |||
| + | O tipo de fonte das legendas (para ficar tudo como em Times New Roman – dica= “serif”) | ||
| + | |||
| + | </ | ||
| + | |||
| + | Apesar das páginas de ajuda do R não serem muito amigáveis no começo, é preciso ter calma e aprender a procurar a informação desejada. A página do '' | ||
| + | |||
| + | ===par()=== | ||
| + | <box orange 75% center|**DICA**> | ||
| + | |||
| + | No começo, quando ainda não se conhece direito todas as funções do '' | ||
| + | é aconselhável que se imprima a página de ajuda para que se possa visualizar todas os argumentos. | ||
| + | |||
| + | </ | ||
| + | |||
| + | Existem dois argumentos do '' | ||
| + | |||
| + | O outro, o '' | ||
| + | |||
| + | <box blue> | ||
| + | Dica: as figuras abaixo foram preenchidas de cinza para facilitar a visualização com o parâmetro par(bg=" | ||
| + | </ | ||
| + | |||
| + | **Exemplos de '' | ||
| + | |||
| + | par(mfrow=c(2, | ||
| + | plot(riqueza~area) | ||
| + | boxplot(riqueza~area.cate) | ||
| + | |||
| + | {{: | ||
| + | |||
| + | par(mfrow=c(1, | ||
| + | plot(riqueza~area) | ||
| + | boxplot(riqueza~area.cate) | ||
| + | |||
| + | {{: | ||
| + | |||
| + | **Exemplos de '' | ||
| + | |||
| + | par(mfrow=c(2, | ||
| + | par(mar=c(4, | ||
| + | plot(riqueza~area) | ||
| + | boxplot(riqueza~area.cate) | ||
| + | |||
| + | {{: | ||
| + | |||
| + | par(mfrow=c(1, | ||
| + | par(mar=c(14, | ||
| + | plot(riqueza~area) | ||
| + | boxplot(riqueza~area.cate) | ||
| + | |||
| + | {{: | ||
| + | |||
| + | par(mfrow=c(1, | ||
| + | par(mar=c(8, | ||
| + | plot(riqueza~area) | ||
| + | par(mar=c(14, | ||
| + | boxplot(riqueza~area.cate) | ||
| + | |||
| + | {{: | ||
| + | |||
| + | =====Diferenças Entre Tipos De Gráfico===== | ||
| + | |||
| + | Infelizmente, | ||
| + | Esta característica, | ||
| + | |||
| + | <box center red 80%| **Exercício 3 – Mudando diferentes Gráficos** > | ||
| + | |||
| + | Com as variáveis: | ||
| + | riqueza <- c(15, | ||
| + | area <- c(2, | ||
| + | area.cate <- rep(c(" | ||
| + | |||
| + | Crie: | ||
| + | plot(riqueza~area) | ||
| + | |||
| + | E agora: | ||
| + | | ||
| + | |||
| + | Percebeu o que mudou? | ||
| + | |||
| + | Agora tente: | ||
| + | |||
| + | boxplot(riqueza~area.cate, | ||
| + | |||
| + | O que aconteceu? | ||
| + | |||
| + | E agora? | ||
| + | |||
| + | par(bty=" | ||
| + | par(tcl=0.3) | ||
| + | boxplot(riqueza~area.cate) | ||
| + | |||
| + | Viu só? | ||
| + | |||
| + | </ | ||
| + | |||
| + | =====Inserindo mais Informações em Gráficos===== | ||
| + | |||
| + | Existem diversas informações que podemos incluir em um gráfico. 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 relações são significativas; | ||
| + | Dentre as várias funções existentes para se inserir informações em gráficos, existem sete que são bastante úteis. Use: | ||
| + | |||
| + | <box red 60%| Exercício 4> | ||
| + | |||
| + | Usando as variáveis: | ||
| + | |||
| + | riqueza <- c(15, | ||
| + | area <- c(2, | ||
| + | abundancia <- rev(riqueza) | ||
| + | |||
| + | Crie gráficos inserindo os parâmetros abaixo. | ||
| + | |||
| + | </ | ||
| + | == lines() == | ||
| + | Para inserir linhas retas ou curvas não-paramétricas (como '' | ||
| + | <code rsplus> | ||
| + | | ||
| + | | ||
| + | </ | ||
| + | |||
| + | {{: | ||
| + | |||
| + | == abline() == | ||
| + | Para inserir linhas de tendência criadas a partir de um modelo linear. | ||
| + | Para isso é primeiro necessário criar o modelo, para depois criar a linha. | ||
| + | <code rsplus> | ||
| + | model <- lm(riqueza~area) | ||
| + | plot(riqueza~area) | ||
| + | abline(model) | ||
| + | </ | ||
| + | |||
| + | {{: | ||
| + | |||
| + | Com a função '' | ||
| + | <code rsplus> | ||
| + | plot(riqueza~area) | ||
| + | abline(15, | ||
| + | </ | ||
| + | |||
| + | {{: | ||
| + | |||
| + | A função '' | ||
| + | <code rsplus> | ||
| + | plot(riqueza~area) | ||
| + | abline(v=mean(area)) | ||
| + | abline(h=mean(riqueza)) | ||
| + | </ | ||
| + | |||
| + | {{: | ||
| + | |||
| + | **Você sabia?** A reta da regressão linear simples sempre passa pelo ponto que é a interseção destas duas linhas. | ||
| + | |||
| + | == text() == | ||
| + | Para inserir texto dentro do gráfico. O texto pode ser uma letra, | ||
| + | um símbolo (muito usado para mostrar diferenciar classes no gráfico), uma palavra ou até mesmo uma frase. | ||
| + | |||
| + | <code rsplus> | ||
| + | plot(riqueza~area) | ||
| + | text(20, | ||
| + | </ | ||
| + | |||
| + | {{: | ||
| + | |||
| + | == mtext() == | ||
| + | Este comando acrescenta texto nas margens do gráfico ou da janela gráfica. Seu uso mais frequente é inserir legendas dos eixos. Apesar de ser possível controlar | ||
| + | as legendas por dentro das funções '' | ||
| + | número de parâmetros que se pode mudar é limitado. Quando se deseja | ||
| + | um controle mais fino dos parâmetros, | ||
| + | etc, é necessário usar '' | ||
| + | <code rsplus> | ||
| + | plot(riqueza~area) | ||
| + | mtext(" | ||
| + | </ | ||
| + | |||
| + | {{: | ||
| + | |||
| + | == par(new=TRUE) == | ||
| + | Para sobrepor um novo gráfico a um gráfico já existente. Em | ||
| + | vez de criar gráficos lado-a-lado, | ||
| + | argumento irá desenhar o novo gráfico sobre o gráfico | ||
| + | anterior. | ||
| + | |||
| + | <code rsplus> | ||
| + | plot(riqueza~area) | ||
| + | par(new = TRUE) | ||
| + | plot(abundancia~area) | ||
| + | </ | ||
| + | |||
| + | {{: | ||
| + | |||
| + | Mas reparem que aqui será necessário alguns ajustes para suprimir | ||
| + | eixos e legendas. Em muitos casos quando se está __inserindo | ||
| + | informações__ será necessário __suprimir parâmetros__. | ||
| + | |||
| + | == axis() == | ||
| + | Para se inserir um eixo novo. Esta função é bastante usada nos casos em que se deseja ter dois gráfico dentro de uma mesma figura (ver '' | ||
| + | ou então se deseja controlar muitos dos parâmetros dos eixos (como em '' | ||
| + | <code rsplus> | ||
| + | plot(riqueza~area) | ||
| + | par(new=TRUE) | ||
| + | plot(abundancia~area, | ||
| + | axis(4) | ||
| + | </ | ||
| + | |||
| + | {{: | ||
| + | |||
| + | Aqui no caso será necessário usar '' | ||
| + | eixos do gráfico inicial de abundância e '' | ||
| + | abundância do lado direito. Para para diferenciar os pontos | ||
| + | entre os dois plots usar '' | ||
| + | legenda de abundância do lado direito será necessário usar '' | ||
| + | será necessário mudar outros parâmetros como distância da margem. | ||
| + | |||
| + | == arrows(), rect(), polygon() == | ||
| + | |||
| + | Para inserir flechas ou **barras de erros** use '' | ||
| + | inserir retângulos, | ||
| + | |||
| + | <code rsplus> | ||
| + | plot(riqueza~area) | ||
| + | rect(20, | ||
| + | </ | ||
| + | |||
| + | {{: | ||
| + | |||
| + | Você também pode usar '' | ||
| + | <code rsplus> | ||
| + | arrows(80, 31, 55, 31) | ||
| + | </ | ||
| + | |||
| + | =====Salvando Gráficos===== | ||
| + | |||
| + | Após ter feitos todos os gráficos desejados, é possível salvá-los em vários formatos, como [[http:// | ||
| + | |||
| + | Após ajustar todos os parâmetros desejados, você pode usar funções do R para salvar a imagem como um arquivo no formato desejado. Há funções para cada formato de arquivo, todas elas com o primeiro argumento '' | ||
| + | <code rsplus> | ||
| + | jpeg(filename = " | ||
| + | </ | ||
| + | |||
| + | Feito isso, o R agora irá enviar todos os resultados de comandos gráficos para este arquivo no diretório de trabalho, que é fechado com a função '' | ||
| + | |||
| + | **Exemplo** | ||
| + | |||
| + | <code rsplus> | ||
| + | jpeg(filename = " | ||
| + | units = " | ||
| + | bg = " | ||
| + | |||
| + | par(mfrow=c(1, | ||
| + | par(mar=c(14, | ||
| + | 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 parâmetros desejados se você executar todo o código após abrir o arquivo da figura, incluindo todos os comandos '' | ||
| + | * Seu arquivo de figura só será salvo quando você executar o comando '' | ||
| + | * Por isso, se você criar dois gráficos, o segundo substituirá o primeiro. | ||
| + | * Ao executar o comando '' | ||
| + | |||
| + | |||
| + | === DICA === | ||
| + | |||
| + | Para gravar uma sequência de gráficos sem precisar dar vários comandos de abertura de arquivos, use no argumento do nome do arquivo a notação '' | ||
| + | <code rsplus> | ||
| + | png(" | ||
| + | </ | ||
| + | Com essa notação os gráficos gerados serão gravados com uma numeração sequencial, que tem '' | ||
| + | |||
| + | Se você gera mais gráficos do que este valor máximo, os excedentes sobrepõem os primeiros, na sequência. Para evitar isso, normalmente usamos '' | ||
| + | |||
| + | O padrão das funções de arquivos gráficos do tipo [[http:// | ||
| + | <code rsplus> | ||
| + | bmp(filename = " | ||
| + | jpeg(filename = " | ||
| + | png(filename = " | ||
| + | tiff(filename = " | ||
| + | </ | ||
| + | |||
| + | Para arquivos do tipo // | ||
| + | |||
| + | ==== Dispositivos Gráficos ==== | ||
| + | |||
| + | Para operar bem com arquivos gráficos no R, é preciso entender o conceito de **dispositivo gráfico** (// | ||
| + | |||
| + | Um dispositivo (// | ||
| + | |||
| + | Em termos bem gerais, o R usa o padrão de sistemas da família UNIX e abre arquivos especiais (//device files//) para controlar cada dispositivo de saída gráfica ((veja [[http:// | ||
| + | |||
| + | === Abrindo e trocando de dispositivos === | ||
| + | |||
| + | Quando executamos um comando com resultado gráfico, o padrão do R é enviar seu resultado para um dispositivo de tela. Se não houver nenhum aberto, este dispositivo de tela será aberto. Por exemplo, se iniciamos o R e executamos um comando '' | ||
| + | <code rsplus> | ||
| + | plot(riqueza~area) | ||
| + | </ | ||
| + | uma janela se abrirá para exibir a figura nele. Este é um **dispositivo gráfico de tela**, normalmente do tipo '' | ||
| + | |||
| + | É possível também abrir mais dispositivos de tela, com o comando: | ||
| + | <code rsplus> | ||
| + | > x11() | ||
| + | </ | ||
| + | que funciona nos dois tipos de sistemas operacionais. Ao executar este comando, uma nova janela gráfica em branco se abrirá, na margem superior da qual você verá a indicação de que agora este é o dispositivo ativo: | ||
| + | |||
| + | {{: | ||
| + | |||
| + | O dispositivo ativo é que receberá o resultado de todos os comandos gráficos. Assim,você pode criar um novo gráfico neste dispositivo, | ||
| + | |||
| + | |||
| + | Para trocar de dispositivo ativo, use a função '' | ||
| + | <code rsplus> | ||
| + | > dev.set(which=2) | ||
| + | </ | ||
| + | |||
| + | === Qual o Dispositivo Ativo? === | ||
| + | Enquanto temos apenas dispositivos de tela abertos, é fácil descobrir qual é o ativo, pois esta informação é exibida na janela de cada um. Mas quando abrimos um ou mais dispositivos de arquivo, como: | ||
| + | <code rsplus> | ||
| + | > png(" | ||
| + | > pdf(" | ||
| + | </ | ||
| + | é fácil se perder. Para que isso não aconteça há as funções '' | ||
| + | <code rsplus> | ||
| + | > dev.list() | ||
| + | | ||
| + | | ||
| + | > dev.cur() | ||
| + | |||
| + | 5 | ||
| + | > dev.set(3) | ||
| + | windows | ||
| + | 3 | ||
| + | > dev.cur() | ||
| + | windows | ||
| + | 3 | ||
| + | </ | ||
| + | |||
| + | Você fecha um dispositivo com o comando '' | ||
| + | |||
| + | <code rsplus> | ||
| + | > dev.list() | ||
| + | | ||
| + | | ||
| + | > dev.cur() | ||
| + | |||
| + | 5 | ||
| + | > dev.off() | ||
| + | windows | ||
| + | 2 | ||
| + | > dev.list() | ||
| + | | ||
| + | | ||
| + | > dev.cur() | ||
| + | windows | ||
| + | 2 | ||
| + | </ | ||
| + | |||
| + | Quando o dispositivo ativo é fechado, o seguinte na lista de dispositivos torna-se o ativo. O último comando acima ilustra isto. | ||
| + | |||
| + | |||
| + | |||
| + | <box red| Exercício 5> | ||
| + | Crie diferentes gráficos em diferentes dispositivos. Por fim, salve-os em jpeg. | ||
| + | </ | ||
| + | |||
| + | |||
| + | Para saber mais como salvar gráficos em //jpeg// use o comando ''? | ||
| + | |||
| + | |||