Passo 1 - Estabelecer o diretório de trabalho
Geralmente estabeleço inicialmente o diretório de trabalho usando a função
setwd().
e acrescentando o local onde está minha pasta de trabalho. Alguns não recomendam esta ação por não fornecer portabilidade ao script. Porém, eu gosto de usá-la e aqui eu coloco. Gosto pois posso executar o script por inteiro de uma vez só, ao selecionar todo o conteúdo e executá-lo.
Porém, você deve se atentar a SEMPRE colocar o caminho do seu diretório de trabalho dentro dessa função. Ressalto que isso deve alterado por você para o seu diretório de trabalho!
Caso você se enrole demais com essa parte do script, sugiro que apague esta linha e, sempre ao iniciar a sessão, use os botões para selecionar o diretório de trabalho.
Pois bem, também possuo o costume de, ao iniciar a sessão, limpar completamente a área de trabalho.
Por isso, FIQUE ATENTO caso você tenha algum objeto de
importância para algum trabalho em sua área de trabalho. Pois após executar o comando abaixo,
rm(list=ls())
qualquer objeto deixado na área de trabalho sumirá completamente…
rm(list=ls()) #limpa COMPLETAMENTE o ambiente de trabalho
#estabelece o diretorio de trabalho
# esse e o meu diretorio de trabalho
# ATUALIZEM ESSE LOCAL, colocando o SEU DIRETORIO DE TRABALHO
setwd('~/Documents/DOC/PROJETO_DOC/LABOTAM/posts_blog/post_layout/')
Passo 4 - Gera uma composição gráfica utilizando a função layout
Chegamos ao que interessa. A função
layout permite compor complexos gráficos em R, pois habilita o usuário a criar uma matriz em que será especificado onde cada plot será alocado na imagem. Dê uma olhada no
help file da função
layout com o comando abaixo:
?layout
Veja o código abaixo:
#layout do mapa
mapa.layout <- layout(
mat = matrix(c(1,1,2,2,2,2,2,2,3,3,2,2,2,2,2,2,3,3,2,2,2,2,2,2),nrow=3,byrow=T),
widths=rep(2/8,8),
heights=rep(1/3,3),
respect=T)
O primeiro argumento de
layout é
mat, que é a matriz. É nesta matriz que se especifica onde cada plot será alocado. Plot número 1 será alocado no painel 1; plot número 2, painel 2; plot número 3, painel 3; e assim por diante.
Para poder visualizar como ficou seu esquema de composição de plots, a partir do objeto
mapa.layout, use o comando abaixo:
layout.show(mapa.layout)
Você obterá como resultado o gráfico abaixo:
Passo 5 - Plota os mapas individualmente para serem alocados em cada painel
Agora vamos plotar cada painel. Neste caso, eu escolhi o painel 1 para situar o leitor quanto à localização de Roraima e das unidades de conservação visitadas durante a expedição
Terra Incognita. O painel 2 foi o escolhido para evidenciar com mais detalhes as localidades de coleta das plantas, enquanto o painel 3 foi utilizado para alocar a legenda. Veja abaixo o restante do script.
# ----------------------------------------------------------------------------------------
#plot 1
# ----------------------------------------------------------------------------------------
par(mar=c(0,2,2,2))
plot(area.mapa,xlim=x1,ylim=y1,lwd=0.2)
plot(rr,add=T,col='gray90')
#plota um retangulo na area do mapa da direita
rect(xleft = min(x.geral), ybottom = min(y.geral), xright =
max(x.geral), ytop = max(y.geral), density = 25)
#coloca escala do mapa
par(cex=1, las=1)
#library(GISTools)
# inclui o NORTE
GISTools::north.arrow(max(x1)-5,max(y1)-10,len=1,cex.lab=0.9,lab='N', col = 'black')
#coloca um texto para avisar quem é Brasil e Guiana
text(-58,-10,labels='BRASIL',pos=4,cex=cex.tam[1],font=2)
box()
# ----------------------------------------------------------------------------------------
#plot 2
# ----------------------------------------------------------------------------------------
par(mar=c(2,2,2,3))
#plota o mapa das uc`s com dados específicos
plot(rr,col='gray90',xlim=x.geral,ylim=y.geral,lwd=1,lty=1) #default lwd=1,lty=1
plot(mocidade,add=T,lty=0,col='gray80')
plot(niquia,add=T,lty=0,col='gray80')
#plota os rios
plot(rios.main,add=T,col='gray60')
plot(rios.sec,add=T,col='gray60')
#plota as areas dos mapas
plot(mocidade,add=T,lwd=1.4,lty=2)
plot(niquia,add=T,lwd=1.4,lty=3)
#plota os pontos de coleta
points(new.reg.voucher$long,new.reg.voucher$lat,pch=pontos[3],col='black',cex=1.4)
#coloca nome dos rios
text(x=-61.42,y=0.8,labels='Rio Branco',pos=1,srt=60,font=3)
text(x=-61.65,y=1.3,labels='Rio Água Boa do Univini',pos=1,srt=70,font=3)
text(x=-61.97,y=0.77,labels='Rio Catrimani',pos=3,srt=-50,font=3)
text(x=-61.9,y=1.2,labels='Rio Capivara',pos=3,srt=-60,font=3)
#coloca nome das UC's
text(x=-61.80,y=1.5,labels='PARNA\nS. Mocidade',pos=1,font=2)
text(x=-61.50,y=1.3,labels='ESEC\nNiquiá',pos=1,font=2)
# coloca um texto para informar área do Amazonas e Roraima
text(-62.845,sum(range(y.geral))/2,labels='Amazonas',pos=4,cex=1.4,font=2)
text((sum(range(x.geral))/2)-0.1,max(y.geral)-0.02,labels='Roraima',pos=4,cex=1.4,font=2)
#coloca escala do mapa
par(cex=1, las=1)
maps::map.scale(max(x.geral) - 0.15, min(y.geral)+0.02, relwidth = 0.10, ratio = F, cex = 1, metric = T, col = 'black')
#coloca o Norte
GISTools::north.arrow(max(x.geral),min(y.geral)+0.07,len=0.02,lab='N',cex.lab=1.2,lwd=1.5,col='black')
#coloca eixos das coordenadas
maps::map.axes()
axis(side=4,las=1)
axis(side=3,las=1)
# ----------------------------------------------------------------------------------------
#plot 3 - LEGENDA
# ----------------------------------------------------------------------------------------
par(mar = c(1,1,0,1))
plot.new()
par(cex = 1.2)
legend(x = 'center', ncol = 1, legend =
c('Pontos de coleta dos\nvouchers','Parque Nacional Serra da\nMocidade','Estação Ecológica de\nNiquiá','Fronteira entre estados','Cursos de água'),
pch = c(pontos[3], NA, NA, NA, NA), col = c('black','black','black','black','gray60'), title = 'LEGENDA',
cex = cex.tam[3], lty = c(0,2,3,1,1), pt.lwd = 2, text.width = 0.8, lwd = 3, y.intersp = 1.8)