
Olá pessoal, Estou tentando fazer um gráfico de contorno no R mas ainda não encontrei a função certa para isso. Basicamente, eu tenho uma simulação de umidade em 11 camadas do solo para cada dia do ano, e gostaria de mostrar isso na forma de um perfil de solo. Por favor leia os comentários ao reproduzir os meus dados com o código abaixo: library(repmis) # reads text data directly from dropbox - no need to download any file # read data url <- 'https://dl.dropboxusercontent.com/u/27700634/precip.txt' tmp <- repmis::source_data(url, sep = '', header = TRUE) # convert julian day to date date <- as.Date(tmp$julian, origin='2011-12-31') data <- cbind(date, tmp) head(data) # now, convert soil layers to matrix and transpose it mat <- t(as.matrix(data[, 4:14])) # essa é a matriz que eu quero plotar. Reparem que ela já está organizada como um "perfil", # com as linhas representando as camadas de solo e as colunas representando os dias do ano A minha primeira tentativa foi usar a função filled.contour do pacote graphics. Eu defino um vetor com o nome das camadas do solo e então eu tento plotar, mas a função diz que a matriz está com as dimensoes invertidas: # define vector with depth of soil layers depths <- c(0.05,0.10,0.20,0.30, 0.40,0.60,0.80,1.00, 1.50,2.00,2.50) # Plot soil moisture profile plot <- filled.contour(data$julian, depths, mat) #Error in .filled.contour(x, y, z, levels, col) : dimension mismatch Obviamente eu consigo transpor a matrix para forçar o gráfico, mas a figura final não é o que eu preciso - o perfil fica de "cabeça para baixo". plot <- filled.contour(data$julian, depths, t(mat)) Como essa função só aceita os eixos em ordem crescente, eu não consigo inverter o eixo y para mostrar a primeira camada do solo no topo do gráfico. Poranto, eu aprecio qualquer sugestão de funções e/ou pacotes para construir o gráfico que eu preciso. Saudações, -- Thiago V. dos Santos PhD student Land and Atmospheric Science University of Minnesota http://www.laas.umn.edu/CurrentStudents/MeettheStudents/ThiagodosSantos/inde... Phone: (612) 323 9898