Ferramentas do usuário

Ferramentas do site


03_apostila:10-graficos02

Diferenças

Aqui você vê as diferenças entre duas revisões dessa página.

Link para esta página de comparações

Próxima revisão
Revisão anterior
03_apostila:10-graficos02 [2020/08/12 06:04]
127.0.0.1 edição externa
03_apostila:10-graficos02 [2023/08/25 17:18] (atual)
Linha 1: Linha 1:
  
 <WRAP tabs> <WRAP tabs>
-  * [[bie5782:02_tutoriais:​tutorial5:​start|Tutorial]] +  * [[02_tutoriais:​tutorial5:​start|Tutorial]] 
-  * [[bie5782:01_curso_atual:​exercicios5| Exercícios]] +  * [[01_curso_atual:​exercicios5| Exercícios]] 
-  * [[bie5782:03_apostila:​05a-graficos| Apostila]] ​  +  * [[03_apostila:​05a-graficos| Apostila]] ​  
-  * [[bie5782:03_apostila:​10-graficos02| Apostila-Avançado]]  ​+  * [[03_apostila:​10-graficos02| Apostila-Avançado]]  ​
 </​WRAP>​ </​WRAP>​
 ====== 5b. Gráficos Avançados ====== ====== 5b. Gráficos Avançados ======
  
 \\ \\
-Existem ​vários ​bibliotecas publicadas no repositório do R para auxiliá-los na construção de gráficos((veja o taskview [[http://​cran.r-project.org/​web/​views/​Graphics.html]] )). Esses pacotes usam um dos sistemas de maquinaria básica do R para a construção gráfica, os pacotes: //** graphics **// ou //​**grid**//​. Por exemplo, os pacotes //lattice// e //ggplot2// usam o sistema **//​grid//​**,​ enquanto o pacote //maps// o sistema **//​graphics//​**. Nesse capítulo utilizaremos apenas as funções básicas já instaladas e carregadas por padrão na sessão R, providas pelo sistema **//​graphics//​**,​ em outro capítulos abordaremos o sistema //​**grid**//​.+Existem ​várias ​bibliotecas publicadas no repositório do R para auxiliá-los na construção de gráficos((veja o taskview [[http://​cran.r-project.org/​web/​views/​Graphics.html]] )). Esses pacotes usam um dos sistemas de maquinaria básica do R para a construção gráfica, os pacotes: //** graphics **// ou //​**grid**//​. Por exemplo, os pacotes //lattice// e //ggplot2// usam o sistema **//​grid//​**,​ enquanto o pacote //maps// o sistema **//​graphics//​**. Nesse capítulo utilizaremos apenas as funções básicas já instaladas e carregadas por padrão na sessão R, providas pelo sistema **//​graphics//​**,​ em outro capítulos abordaremos o sistema //​**grid**//​.
 Nesse capítulo utilizaremos um exemplo para ilustrar um procedimento básico para a elaboração de gráficos mais complexos. ​ Nesse capítulo utilizaremos um exemplo para ilustrar um procedimento básico para a elaboração de gráficos mais complexos. ​
  
Linha 15: Linha 15:
  
 A parte mais importante e difícil da elaboração de uma boa representação gráfica está na sua concepção,​ que precede o procedimento que iremos descrever nesse capítulo. Partiremos da premissa que já foi decidido qual o melhor gráfico e como os elementos que o compõem estarão distribuídos e organizados. Uma boa dica é construir um esquema do gráfico a mão antes de iniciar o código para montá-lo no R.  ​ A parte mais importante e difícil da elaboração de uma boa representação gráfica está na sua concepção,​ que precede o procedimento que iremos descrever nesse capítulo. Partiremos da premissa que já foi decidido qual o melhor gráfico e como os elementos que o compõem estarão distribuídos e organizados. Uma boa dica é construir um esquema do gráfico a mão antes de iniciar o código para montá-lo no R.  ​
-No nosso caso, desenhamos, em um guardanapo de papel na mesa de um bar, um esboço do gráfico que iremos construir nesse capítulo. Os dados provem ​do resultado de uma metanálise ​que já havíamos explorados usando técnicas que apresentamos no capitulo ​de [[bie5782:03_apostila:​05-exploratoria |Análise Exploratória de Dados]]. ​    ​+No nosso caso, desenhamos, em um guardanapo de papel na mesa de um bar, um esboço do gráfico que iremos construir nesse capítulo. ​ 
 + 
 +/* 
 +Os dados provém ​do resultado de uma meta-análise ​que já havíamos explorados usando técnicas que apresentamos no capítulo ​de [[03_apostila:​05-exploratoria |Análise Exploratória de Dados]]. ​ 
 +*/
  
 <WRAP center round box 60%> <WRAP center round box 60%>
-{{:bie5782:​03_apostila:​grapmeta01.png?​400|}}+{{ :​03_apostila:​grapmeta01.png?​400 |}}
 </​WRAP>​ </​WRAP>​
  
  
-O gráfico que esboçamos, apesar de aparentemente simples, apresenta desafios na sua construção e será utilizado para apresentar o procedimento padrão que utilizamos para a elaboração de gráficos mais avançado, baseado apenas nas funções básicas do R.  ​+O gráfico que esboçamos, apesar de aparentemente simples, apresenta desafios na sua construção e será utilizado para apresentar o procedimento padrão que utilizamos para a elaboração de gráficos mais avançados, baseado apenas nas funções básicas do R.  ​
  
 ==== Layout ==== ==== Layout ====
-A primeira parte na construção do gráfico é definir seu layout. Aprendemos no capítulo introdutório de [[bie5782:03_apostila:​05a-graficos|gráficos]] que podemos dividir a janela gráfica modificando os parâmetros //mfrow// ou //mfcol// do dispositivo gráfico, ​ através da função ''​par()''​. Uma forma mais versátil e flexível de dividir a janela gráfica é utilizar a função ''​layout()''​. ​ O primeiro argumento dessa função é uma //​matrix// ​com o número de linhas e colunas correspondente às divisões do dispositivo. Os valores nessa matrix ​correspondem à ordem que cada área do dispositivo será plotada.+A primeira parte na construção do gráfico é definir seu layout. Aprendemos no capítulo introdutório de [[03_apostila:​05a-graficos|gráficos]] que podemos dividir a janela gráfica modificando os parâmetros //mfrow// ou //mfcol// do dispositivo gráfico, ​ através da função ''​par()''​. Uma forma mais versátil e flexível de dividir a janela gráfica é utilizar a função ''​layout()''​. ​ O primeiro argumento dessa função é uma matriz ​com o número de linhas e colunas correspondente às divisões do dispositivo. Os valores nessa matriz ​correspondem à ordem que cada área do dispositivo será plotada.
 Veja um exemplo dividindo o dispositivo gráfico em nove áreas: Veja um exemplo dividindo o dispositivo gráfico em nove áreas:
-<​code>​+<​code ​rsplus>
 mtplot <- matrix(1:9, ncol=3, nrow=3, byrow=TRUE) mtplot <- matrix(1:9, ncol=3, nrow=3, byrow=TRUE)
 layout(mtplot) layout(mtplot)
Linha 35: Linha 39:
 Além disso, é possível controlar a proporção que cada linha e coluna terá no layout final utilizando os argumentos ''​widths''​ e ''​heights''​. Além disso, é possível controlar a proporção que cada linha e coluna terá no layout final utilizando os argumentos ''​widths''​ e ''​heights''​.
  
-<​code>​+<​code ​rsplus>
 mtplot <- matrix(1:9, ncol=3, nrow=3, byrow=TRUE) mtplot <- matrix(1:9, ncol=3, nrow=3, byrow=TRUE)
 layout(mtplot,​ widths=c(0.1,​ 0.6, 0.4), heights=c(1,​4,​1)) layout(mtplot,​ widths=c(0.1,​ 0.6, 0.4), heights=c(1,​4,​1))
Linha 41: Linha 45:
 </​code>​ </​code>​
  
-Note que os valores referentes ao tamanho das colunas ou linhas não necessita somar umsignificam apenas ​proporção relativa. ​+Note que os valores referentes ao tamanho das colunas ou linhas não necessita somar um; eles significam apenas ​uma proporção relativa. ​
  
 <WRAP center round box red 60%> <WRAP center round box red 60%>
Linha 53: Linha 57:
 O nosso gráfico tem um layout bem simples. Uma região principal onde vamos fazer o gráfico propriamente dito e uma coluna mais estreita onde vamos colocar a legenda da borda direita ("life stage" e "​geographic region"​) e as linhas associadas. O nosso gráfico tem um layout bem simples. Uma região principal onde vamos fazer o gráfico propriamente dito e uma coluna mais estreita onde vamos colocar a legenda da borda direita ("life stage" e "​geographic region"​) e as linhas associadas.
    
-<​code>​+<​code ​rsplus>
 layout (matrix(c(1,​2),​ncol=2,​ nrow=1), width=c(8,​2)) layout (matrix(c(1,​2),​ncol=2,​ nrow=1), width=c(8,​2))
 layout.show(2) layout.show(2)
Linha 59: Linha 63:
  
 ==== Região Principal ==== ==== Região Principal ====
-Antes de plotar algo na primeira área do gráfico, vamos primeira ​ajustar as bordas usando a função ''​par()''​ e seu argumento ''​mar''​. Em seguida iniciamos o gráfico sem nenhum valor, apenas definindo as coordenadas ​do região gráfica. Lembre-se, queremos colocar cada elemento do gráfico separadamente e ter controle total sobre o que será desenhado. Os valores do eixo //x// correspondem ao intervalo dos dados e do eixo //y// foi definido pelo número de elementos que serão desenhados e o espaçamento entre eles. Nesse último caso a escala é arbitrária. Para definir tanto o espaçamento das bordas quanto a escala de //y// utilizamos um processo iterativo de ajuste, plotando o gráfico e reajustando os valores.+Antes de plotar algo na primeira área do gráfico, vamos primeiro ​ajustar as bordas usando a função ''​par()''​ e seu argumento ''​mar''​. Em seguida iniciamos o gráfico sem nenhum valor, apenas definindo as coordenadas ​da região gráfica. Lembre-se, queremos colocar cada elemento do gráfico separadamente e ter controle total sobre o que será desenhado. Os valores do eixo //x// correspondem ao intervalo dos dados e do eixo //y// foi definido pelo número de elementos que serão desenhados e o espaçamento entre eles. Nesse último caso a escala é arbitrária. Para definir tanto o espaçamento das bordas quanto a escala de //y// utilizamos um processo iterativo de ajuste, plotando o gráfico e reajustando os valores.
  
-<​code>​ +<​code ​rsplus
-par(mar=c(5,​4,4,3.5))+par(mar=c(5,​1,4,5))
 plot(x=NULL,​y=NULL,​ xlim=c(-1.5,​2.5),​ ylim=c(0.5,​7.5),​ plot(x=NULL,​y=NULL,​ xlim=c(-1.5,​2.5),​ ylim=c(0.5,​7.5),​
           type="​n",​ yaxt="​n",​ xlab="​Effect Size (lnOR)", ​           type="​n",​ yaxt="​n",​ xlab="​Effect Size (lnOR)", ​
Linha 70: Linha 74:
 Agora vamos colocar as legendas e os eixos do lado direito do gráficos usando a função ''​axis()''​ e as linhas vertical e horizontais utilizando a função ''​abline()'':​ Agora vamos colocar as legendas e os eixos do lado direito do gráficos usando a função ''​axis()''​ e as linhas vertical e horizontais utilizando a função ''​abline()'':​
  
-<​code>​+<​code ​rsplus>
 axis(side=4,​ at=c(1,​2,​4,​5,​7),​ labels=c("​adult (2)", "young (28)", axis(side=4,​ at=c(1,​2,​4,​5,​7),​ labels=c("​adult (2)", "young (28)",
                   "​temperate (28)", "​tropical (2)", "​overall (30)"​),​                   "​temperate (28)", "​tropical (2)", "​overall (30)"​),​
Linha 78: Linha 82:
 </​code>​ </​code>​
  
-Agora vamos colocar os pontos e as barras referentes aos valores médios e intervalo de confiança usando a função ''​points()''​ e  os símbolos ''​pch=19''​ (circulo preenchido) e ''​pch="​_"''​ para a barra ((veja o help e o exemplo da função points para os códigos dos símbolos)). Em seguida desenhamos as linhas usando a função ''​segments()''​ que tem como argumento as coordenadas do inicio ​(//x0// e //y0//) e do final da linha (//x1// e //y1//). Note que poderíamos desenhar isoladamente cada ponto e cada segmento, mas fazemos todos juntos concatenando as coordenadas em vetores em que as posições são equivalentes.+Agora vamos colocar os pontos e as barras referentes aos valores médios e intervalo de confiança usando a função ''​points()''​ e  os símbolos ''​pch=19''​ (circulo preenchido) e ''​pch="​_"''​ para a barra ((veja o help e o exemplo da função points para os códigos dos símbolos)). Em seguida desenhamos as linhas usando a função ''​segments()''​ que tem como argumento as coordenadas do início ​(//x0// e //y0//) e do final da linha (//x1// e //y1//). Note que poderíamos desenhar isoladamente cada ponto e cada segmento, mas fazemos todos juntos concatenando as coordenadas em vetores em que as posições são equivalentes.
  
-<​code>​+<​code ​rsplus>
 points (x=c(-0.577,​ 0.87, 0.01, 1.06,​0.457), ​ points (x=c(-0.577,​ 0.87, 0.01, 1.06,​0.457), ​
                ​y=c(1,​2,​ 4, 5, 7), pch=19 ) #medias                ​y=c(1,​2,​ 4, 5, 7), pch=19 ) #medias
Linha 92: Linha 96:
 <WRAP center round box 100%> <WRAP center round box 100%>
 //​**__Desenhando os pontos e barras no gráfico__**//​ //​**__Desenhando os pontos e barras no gráfico__**//​
-{{:bie5782:​03_apostila:​meta01.png?​300 ​ |}} +{{:​03_apostila:​meta01.png?​300 ​ |}} 
-{{  ​:bie5782:​03_apostila:​meta02.png?​300|}}+{{  :​03_apostila:​meta02.png?​300|}}
  
 </​WRAP>​ </​WRAP>​
Linha 99: Linha 103:
  
 ==== Segunda região gráfica ==== ==== Segunda região gráfica ====
-Vamos inciar ​a segunda região gráfica da mesma maneira que a primeira, ajustando as margens e definindo as coordenadas cartesianas da região que nesse caso são totalmente arbitrárias,​ mas devem ter correspondência com o eixo //y// da primeira área gráfica. Note os argumentos do ''​plot()''​ nesse caso são necessários para que nada seja desenhado na região, e estamos apenas definindo a escala das coordenadas //x// e //y//.+Vamos iniciar ​a segunda região gráfica da mesma maneira que a primeira, ajustando as margens e definindo as coordenadas cartesianas da região que nesse caso são totalmente arbitrárias,​ mas devem ter correspondência com o eixo //y// da primeira área gráfica. Note os argumentos do ''​plot()''​ nesse caso são necessários para que nada seja desenhado na região, e estamos apenas definindo a escala das coordenadas //x// e //y//.
  
-<​code>​ +<​code ​rsplus
-par (mar=c(5,4,​4,​2.9)) ​+par (mar=c(5,2,​4,​2.9)) ​
 plot(x=NULL,​y=NULL,​ xlim=c(0,​2),​ ylim=c(0.5,​7.5),​type="​n", ​ plot(x=NULL,​y=NULL,​ xlim=c(0,​2),​ ylim=c(0.5,​7.5),​type="​n", ​
      ​xaxt="​n",​ yaxt="​n",​xlab="",​ ylab="",​ bty="​n"​) ​      ​xaxt="​n",​ yaxt="​n",​xlab="",​ ylab="",​ bty="​n"​) ​
Linha 115: Linha 119:
 Agora só precisamos colocar os segmentos e as legendas para finalizar o nosso gráfico: Agora só precisamos colocar os segmentos e as legendas para finalizar o nosso gráfico:
  
-<​code>​+<​code ​rsplus>
 points(x=rep(c(0.5),​4),​ y=c(0.4, 2.6, 3.4, 5.6), pch="​-"​) points(x=rep(c(0.5),​4),​ y=c(0.4, 2.6, 3.4, 5.6), pch="​-"​)
 segments(x0=c(0.5,​ 0.5), y0=c(0.4, 3.4), x1=c(0.5,​0.5),​ y1=c(2.6, 5.6)) segments(x0=c(0.5,​ 0.5), y0=c(0.4, 3.4), x1=c(0.5,​0.5),​ y1=c(2.6, 5.6))
 axis(side=4,​ at=1.5, labels= "​Target life stage",​ lwd.ticks=0) axis(side=4,​ at=1.5, labels= "​Target life stage",​ lwd.ticks=0)
-axis(side=4,​ at=4.5, labels= "​Geographic region",​ lwd.ticks=0)+axis(side=4,​ at=4.75, labels= "​Geographic region",​ lwd.ticks=0)
 </​code>​ </​code>​
  
Linha 125: Linha 129:
    
 <WRAP center round box 80%> <WRAP center round box 80%>
-{{  ​:bie5782:​03_apostila:​metagraf.png?​500 ​ |}}+{{  :​03_apostila:​metagraf.png?​500 ​ |}}
 </​WRAP>​ </​WRAP>​
  
 ==== Salvando o Gráfico ==== ==== Salvando o Gráfico ====
-Explicamos os procedimentos gerais para salvar gráfico no capítulo anterior, no tópico [[bie5782:03_apostila:​05a-graficos#​Salvando Gráficos|Salvando Gráficos]]. Vamos recordar alguns pontos importantes.+Explicamos os procedimentos gerais para salvar gráfico no capítulo anterior, no tópico [[03_apostila:​05a-graficos#​Salvando Gráficos|Salvando Gráficos]]. Vamos recordar alguns pontos importantes.
 O nosso gráfico foi construído no dispositivo de tela e pode ser salvo na resolução padrão com a função ''​savePlot()''​ que permite salvar em formatos //jpg//, //png//, //tiff// e //bmp//. Veja o help da função para mais informações. ​ O nosso gráfico foi construído no dispositivo de tela e pode ser salvo na resolução padrão com a função ''​savePlot()''​ que permite salvar em formatos //jpg//, //png//, //tiff// e //bmp//. Veja o help da função para mais informações. ​
 Para salvar uma cópia com resolução e tamanho definidos pelo usuário é necessário usar o dispositivo de arquivo. O R tem vários dispositivos de arquivos que são abertos com as funções com o nome do formato do arquivo: ''​bmp()'',​ ''​jpeg()'',​ ''​png()''​ e ''​tiff()''​. Para salvar uma cópia com resolução e tamanho definidos pelo usuário é necessário usar o dispositivo de arquivo. O R tem vários dispositivos de arquivos que são abertos com as funções com o nome do formato do arquivo: ''​bmp()'',​ ''​jpeg()'',​ ''​png()''​ e ''​tiff()''​.
Linha 137: Linha 141:
   * abra o dispositivo usando a função correspondente,​ nomeando o arquivo que será construído e definindo os parâmetros de tamanho da imagem e unidade a ser utilizada. Por exemplo: ''​width = 480, height = 480, units = "​px"''​   * abra o dispositivo usando a função correspondente,​ nomeando o arquivo que será construído e definindo os parâmetros de tamanho da imagem e unidade a ser utilizada. Por exemplo: ''​width = 480, height = 480, units = "​px"''​
   * faça o gráfico utilizando o código construído anteriormente no dispositivo de janela. Note que não irá aparecer o gráfico pois ele está sendo montado diretamente no arquivo nomeado   * faça o gráfico utilizando o código construído anteriormente no dispositivo de janela. Note que não irá aparecer o gráfico pois ele está sendo montado diretamente no arquivo nomeado
-  * ao finalizar o gráfico, feche o dispositivo gráfico que abriu utilizando a função ''​dev.off()''​. Nesse momento o arquivo ​fechado e gravado no seu diretório de trabalho ''​getwd()''​. ​+  * ao finalizar o gráfico, feche o dispositivo gráfico que abriu utilizando a função ''​dev.off()''​. Nesse momento o arquivo ​é fechado e gravado no seu diretório de trabalho ''​getwd()''​. ​
 Veja exemplo abaixo para a construção de um arquivo //png// com fundo transparente: ​ Veja exemplo abaixo para a construção de um arquivo //png// com fundo transparente: ​
-<​code>​+<​code ​rsplus>
 png(filename = "​metaPlot.png",​ png(filename = "​metaPlot.png",​
      width = 900, height = 900, units = "​px",​ pointsize = 12,      width = 900, height = 900, units = "​px",​ pointsize = 12,
       bg = "​transparent"​)       bg = "​transparent"​)
       ​       ​
-      ...# inicio ​do código do gráfico+      ...# início ​do código do gráfico
       ...       ...
       ...# fim do código do gráfico ​       ...# fim do código do gráfico ​
03_apostila/10-graficos02.1597223092.txt.gz · Última modificação: 2020/08/12 06:04 por 127.0.0.1