Je rencontre des problèmes pour combiner les graphes "plot" avec le graphe "spplot". Mon idée est de produire 4 cartes de température (créer par la fonction "stack" et générer par la fonction "spplot"). Chacune des cartes est accompagnée d'un plot de la température en fonction de la latitude (deux en haut et deux en bas). Tous les graphes se situent donc dans la même figure. Voici le code:
Code : Tout sélectionner
library(ncdf)
DATA <- open.ncdf("G:/Drop/Dropbox/Master1/ComplModClim/Travail/Data/tas_Amon_EC-EARTH_historical_r1i1p1_194001-200911.nc")
t <- get.var.ncdf(DATA, "time")
lon <- get.var.ncdf(DATA, "lon")
lat <- get.var.ncdf(DATA, "lat")
tas <- get.var.ncdf(DATA, "tas")
Nt <- length(t)
nlon <- length(lon)
nlat <- length(lat)
n <- 1:nlon
lon1 <- lon[n > nlon/2]-360;
lon2 <- lon[n <= nlon/2];
lon_transf <- c(lon1, lon2);
tas_transf <- array(dim=c(nlon, nlat, Nt));
tas_transf[n <= nlon/2,,] <- tas[n > nlon/2,,];
tas_transf[n > nlon/2,,] <- tas[n <= nlon/2,,];
library(raster)
# creation de raster
for(i in seq(4)){
assign(paste0("r", i), flip(raster(x = t(tas_transf[ , , i + 10 * (i - 1)]), xmn = min(lon_transf), xmx = max(lon_transf), ymn = min(lat), ymx = max(lat)), direction="y"))
}
## Empilement de raster
r <- stack(r1, r2, r3, r4)
## Nom des rasters
names(r) <- paste("Date", 1:4)
couleur <- c(rgb(255/255,255/255,178/255), rgb(254/255,204/255,92/255), rgb(253/255,141/255,60/255), rgb(227/255,26/255,28/255));
color_plate <- colorRampPalette(couleur, space="rgb");
## Cartes avec pays
library(maps)
world <- map(regions = ".", fill = TRUE, plot = FALSE)
library(maptools)
## Conversion map --> SpatialPolygons
nam <- strsplit(world$names, ":")
id <- sapply(nam, function(x) x[1])
World <- map2SpatialPolygons(world, IDs = id, proj4string = CRS("+proj=longlat"))
## Trace les cartes (premier plot)
X11();
z <- spplot(r, col.regions = color_plate(100), panel = function(...){panel.gridplot(...); sp.polygons(World)})
print(z)
## Second plot
par(fig=c(0,0.5,0.72,0.9),new=TRUE,mar=c(1,1,1,1))
tas1 <- tas[100,,2]
plot(lat, tas1, type="l")
## Troisieme plot
par(fig=c(0.55,1,0.72,0.9),new=TRUE,mar=c(1,1,1,1))
tas2 <- tas[100,,12]
plot(lat, tas2, type="l")
## Quatrieme plot
par(fig=c(0,0.5,0,0.2),new=TRUE,mar=c(1,1,1,1))
tas3 <- tas[100,,3]
plot(lat, tas3, type="l")
## Cinquieme plot
par(fig=c(0.55,1,0,0.2),new=TRUE,mar=c(1,1,1,1))
tas4 <- tas[100,,30]
plot(lat, tas4, type="l")
par(fig=c(0,1,0.4,0.7), new=T)
Le fichier de donnée associé à ce code se situe sur le lien: https://dl.dropboxusercontent.com/u/529 ... -200911.nc
Pour pouvoir afficher plusieurs graphes tout en contrôlant leur taille, j'utilise la fonction par(fig=c(x1, x2, y1, y2), new=T). Le problème est que cela ne marche pas pour la fonction "spplot". En effet, les cartes disparaissent pour mettre les 4 "plot". Y a-t-il une commande similaire à par(fig) qui tient compte de l'ajout d'autres graphes après avoir produit les cartes? Sinon, comment s'y prendre?
Merci d'avance,
Mai