* [[bie5782:02_tutoriais:tutorial5:start|Tutorial]] * [[bie5782:02_tutoriais:tutorial5b:start|Tutorial II]] * [[bie5782:01_curso_atual:exercicios5| Exercícios]] * [[bie5782:03_apostila:05a-graficos| Apostila]] ====== Procedimento para a construção de gráficos no R ====== Nesse tutorial apresentamos um procedimento para a construção de gráficos no R, incluindo cada elemento separadamente. O objetivo é mostrar como é possível editar e incluir elementos gráficos da forma que desejar. Utilizaremos para isso a modificação de um gráfico publicado por uma de nossas primeiras alunas ((Camila Castanho)). {{:bie5782:02_tutoriais:tutorial5b:metagraf.jpg?800|}} Gráfico publicado em [[https://peerj.com/articles/768/|Castanho et. al. 2015. A meta-analysis of plant facilitation in coastal dune systems: responses, regions, and research gaps. PeerJ]] Para simplificar, vamos fazer apenas um dos painéis acima. ===== Criando o layout ===== A função layout cria paineis de diferentes tamanhos no dispositivo gráfico. No nosso caso vamos criar duas colunas, a direita com 80% da largura total. O primeiro argumento da função é uma matriz com o sequência com que os painéis irão ser desenhados layout(matrix(c(1,2),ncol=2, nrow=1), width=c(8,2)) layout.show(2) # mostra o layout dos dois paineis ===== Iniciando o primeiro painel ===== Primeiro ajustamos o parâmetros gráficos do primeiro painel (no caso a margem), em seguida construímos o espaço de coordenadas sem nenhum elemento, apenas algumas legendas; par (mar=c(5,4,4,3.5))#controla tamanhos das margens 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)", ylab="", main="SURVIVAL") ==== Linhas guias e eixo ==== abline (v=0, lty=2) ## desenha linhas de regressão (a+bx) ou v=vertical, h=horizontal abline (h=c(3,6)) axis(side=4, at=c(1,2,4,5,7), labels=c("adult (2)", "young (28)", "temperate (28)", "tropical (2)", "overall (30)"),las=2 ) # desenha o eixo ==== Inserindo os dados ==== #ADULT points (x=-0.577,y=1, pch=19) # pch: tipo de simbolo points (x=-1.2,y=1, pch="|", cex=1.2) points (x= 0.05,y=1, pch="|", cex=1.2) segments(x0=-1.2, y0=1, x1= 0.05, y1=1) # um segmento #YOUNG points (x=0.87,y=2, pch=19) points (x=-0.05,y=2, pch="|") points (x=1.1,y=2, pch="|") segments(x=1.1, y0=2, x1=-0.05, y1=2) #TEMPERATE points (x=0.01,y=4, pch=19) points (x=-0.07,y=4, pch="|") points (x=0.5,y=4, pch="|") segments(x=-0.07, y0=4, x1=0.5, y1=4) #TROPICAL points (x=1.06,y=5, pch=19) points (x=0.946,y=5, pch="|") points (x=2.073,y=5, pch="|") segments(x=2.073, y0=5, x1=0.946, y1=5) #OVERALL points (x=0.457,y=7, pch=19) points (x=0.025,y=7, pch="|") points (x=0.847,y=7, pch="|") segments(x=0.025, y0=7, x1=0.847, y1=7) ===== Segundo painel ===== Criamos esse painel apenas para acrescentar legenda par (mar=c(5,4,4,2.9))#controla tamanhos das margens 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") # bty: tipo de caixa no limite do gráfico; xaxt: tipo de eixo x points(x=0.5, y=0.4, pch="-") points (x=0.5, y=2.6, pch="-") segments(x0=0.5, y0=0.4, x1=0.5, y1=2.6) axis(side=4, at=1.5, labels= "Target life stage", lwd.ticks=0) points(x=0.5, y=3.4, pch="-") points (x=0.5, y=5.6, pch="-") segments(x0=0.5, y0=3.4, x1=0.5, y1=5.6) axis(side=4, at=4.5, labels= "Geographic region", lwd.ticks=0) . ===== Salvando o gráfico ===== Para salvar o gráfico em um arquivo, pode-se utilizar a função savePlot. Para ter mais controle da qualidade gráfica é necessário usar um dispositivo de arquivo (funções ''tiff'', ''jpeg'', ''png'', por exemplo). savePlot("metaGraf.png", type= "png") Elementos de mesmo tipo podem ser inseridos conjuntamente sem a necessidade de utilizar um comando para cada elemento. Para isso é preciso construir vetores com os valores concatenados nas posições corretas. Veja abaixo um código simplificado do gráfico. ===== Código simplificado ===== layout (matrix(c(1,2),ncol=2, nrow=1), width=c(8,2)) par (mar=c(5,4,4,3.5))#controla tamanhos das margens 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)", ylab="", main="SURVIVAL") abline (v=0, lty=2) ## desenha linhas de regressão (a+bx) ou v=vertical, h=horizontal abline (h=c(3,6)) axis(side=4, at=c(1,2,4,5,7), labels=c("adult (2)", "young (28)", "temperate (28)", "tropical (2)", "overall (30)"),las=2 ) # desenha o eixo points (x=c(-0.577, 0.87, 0.01, 1.06,0.457), y=c(1,2, 4, 5, 7), pch=19 ) #medias points (x=c(-1.2, 0.05, 0.05, 1.1, -0.07, 0.5, .946,2.073, 0.025,0.847), y=rep(c(1,2, 4, 5, 7),each=2), pch= "|" )# limites do IC 95% (pch= tipo de simbolo) segments(x=c(-1.2, 0.05, -0.07, .946, 0.025), y0=c(1,2, 4, 5, 7), x1=c( 0.05, 1.1, 0.5,2.073,0.847), y1=c(1,2, 4, 5, 7)) # os segmentos do IC #SEGUNDA PARTE par (mar=c(5,4,4,2.9))#controla tamanhos das margens 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") # bty: tipo de caixa no limite do gráfico; xaxt: tipo de eixo x 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)) 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) #para salvar em JPEG ou outras extensões savePlot("metagraf.png", type="png")