* [[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")