[R-br] Cores em campos meteorologicos
Mateus Dias Nunes
nunes.mateusdias em gmail.com
Sexta Fevereiro 19 17:12:12 BRST 2016
Olá eu gostaria de colocar cores (com a barra de cores ao lado da figura)
no meu mapa ao invés de usar os contornos com a função "contour";
abaixo o link da figura que consegui gerar através dessa função.
https://www.dropbox.com/s/xi622mbpqg7tgch/campo_medio_O3.png?dl=0
a figura foi gerada a partir do script a baixo e o dado(netcdf) esta no
link a baixo
https://www.dropbox.com/s/ntvmtx7wonwo839/teste.nc?dl=0
O script:
# Carregando biblioteca para manipular arquivos netCDF
library(maps)
library(ncdf4)
#==========================================================================
# carregando arquivo e lendo dados - para essa versão do R usa-se o comando
# var.get.nc, quando o comando original é get.var.nc (não sei o porque)
#EXISTEM DIFERENÇAS PARA ABRIR AS BIBLIOTECAS "RNetCDF" e "ncdf4".
# PARA ESTE EXEMPLO SÃO USADOS RECURSOS PARA ABRIR A BIBLIOTECA (
http://nbcgib.uesc.br/mirrors/cran/)
#POIS RNetCDF, ncdf e ncdf4 APRESENTAM COMANDOS DIFERENTES PARA ABRIRMOS AS
VARIÁVEIS
dados <- nc_open('teste.nc')
# lendo coordenadas espaço-temporal
lat <- ncvar_get( dados, 'lat' )
lon <- ncvar_get( dados, 'lon' )
time <- ncvar_get( dados, 'time' )
#=======================================================================================================
# lendo dados coluna total de Ozônio
ColumnAmountO3 <- ncvar_get( dados, 'ColumnAmountO3' )
# dimensoes da variavel ColumnAmountO3
dims_ColumnAmountO3 <- dim(ColumnAmountO3)
# tornando o arranjo 3D (ColumnAmountO3) em um 2D, organizado em ptos de
grade X tempo
dim(ColumnAmountO3) <- c( dims_ColumnAmountO3[1]*dims_ColumnAmountO3[2],
dims_ColumnAmountO3[3] )
# calculando a média e retornado-a em 2D
media_ColumnAmountO3 <- rowMeans( ColumnAmountO3)
dim(media_ColumnAmountO3) <- c( dims_ColumnAmountO3[1],
dims_ColumnAmountO3[2] )
#==========================================================================================================
# longitude varia de 0 a 360, convertendo para -180 a 180, essa conversão é
feita para plotagem sobre o mapa
for (i in 1:dim(lon)) { if (lon[i]>180) { lon[i] <- lon[i]-360 } }
# criando arquivo PNG que receberá o campo com o mapa
#png( filename="campo_medio_O3_jan2005.png",width=600,height=800 )
# plotando mapa da America do Sul
map( xlim=c(-100,-10), ylim=c(-60,10) )
map.axes() # plotando eixos
title( main="Campo médio de Ozônio Novembros" ) # título do gráfico
# definindo intervalo de 5 Dobson Units (DU)
intervalos = seq( trunc(min(ColumnAmountO3)), trunc(max(ColumnAmountO3)), 5
)
# adicionando campo de pressao ao nivel medio do mar ao mapa
# ler mais a respeito da função contour() com help(contour)
contour( sort(lon), lat, media_ColumnAmountO3[ order(lon), ], add=T,
levels=intervalos, lwd=2, labcex=1.3, col="black" )
# fechando arquivo PNG
#dev.off()
Acredito que não seja complicado porém não consegui aplicar essa função.
att,
____________________________________________________________________________
MATEUS DIAS NUNES
MESTRANDO DO PROGRAMA DE PÓS-GRADUAÇÃO EM METEOROLOGIA - PPGMET
UNIVERSIDADE FEDERAL DE PELOTAS - UFPEL
TELEFONE: +55 (53) 81125154
____________________________________________________________________________
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20160219/a9b8889c/attachment.html>
Mais detalhes sobre a lista de discussão R-br