plotting border over map

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

plotting border over map

uday
I am using following codes to plot map

library(sp)
library(rgdal)
library(maps)
library(gplots)
library(clim.pact)
library(fields)
source("/R/PlotGridded2DMap.R")
source("/R/image.plot.fix.R")
source("/R/image.plot.plt.fix.r")

seasonal_plot<-function(input,lonll=-180,latll=-90,lonres=5.,latres=3.75,write_file=TRUE,The_title=NULL){
  if(is.null(The_title)){
    for (ki in 1:length(input)){
      The_title[[ki]]<-sprintf("XCH4 CH4 (ppb)",ki)
    }
  }
  if(!is.list(input)){input=list(input)}
 lon.ll     <- lonll               #lower left corner of grid
 lat.ll     <- latll                #lower left corner of grid
 lon.res    <- lonres               #resolution in degrees longitude
 lat.res    <- latres            #resolution in degrees latitude

for (ki in 1:length(input)){
# plot for whole world
  sh<-dim(input[[ki]]$avg)
 numpix.x   <- sh[1]                 #number of pixels in x directions in grid
 numpix.y   <- sh[2]                 #number of pixels in y directions in grid
 #print(ki)
 #print(input[[ki]]$avg)
 mat        <- t(input[[ki]]$avg)# length
 xs         <- seq(lon.ll,by=lon.res,length=dim(mat)[2])+0.5*lon.res #centers of cells
 ys         <- seq(lat.ll,by=lat.res,length=dim(mat)[1])+0.5*lat.res #centers of cells
 col=rich.colors(32)
 
 xlims      <-c(-180,180)
 ylims      <-c(-90,90)

 old.par    <- par(no.readonly = TRUE)
 par(mar=c(par()$mar[1:3],4))
 cex.set    <- 1.2
 par(cex=cex.set)
 par(mgp=c(2.0,0.3,0))
 par(tcl=-0.1)
 opath     <- ("/Result/scitm3/") # path to save image
 if(write_file){png(file=paste(opath,The_title[[ki]],".png",sep=" "),width=1000,height=800,pointsize=23)}
 
  if(!write_file){x11()}
 image.plot.fix(x=xs,y=ys,z=input[[ki]]$avg,zlim=c(1600,2000),nlevel=64,col=col,xlab="Longitude",ylab="Latitude",legend.width=0.03,
       offset=0.05,legend.only=F,lg=F)

map(database = "world", add=TRUE,col="black")

 title(paste(The_title[[ki]]))
 if(write_file){dev.off()}
 
}
}

when I try to use map(database = "world", add=TRUE,col="black")
I get error
Error in map(database = "world", add = TRUE, col = "black") :
  unused argument(s) (database = "world")

if I comment this line then I get plot but it does not have world border.

I really got stuck at this point and I do not know how to fix it.
Reply | Threaded
Open this post in threaded view
|

Re: plotting border over map

Ray Brownrigg-2
On Sat, 17 Mar 2012, uday wrote:

> I am using following codes to plot map
>
> library(sp)
> library(rgdal)
> library(maps)
> library(gplots)
> library(clim.pact)
> library(fields)
> source("/R/PlotGridded2DMap.R")
> source("/R/image.plot.fix.R")
> source("/R/image.plot.plt.fix.r")
>
> seasonal_plot<-function(input,lonll=-180,latll=-90,lonres=5.,latres=3.75,wr
> ite_file=TRUE,The_title=NULL){ if(is.null(The_title)){
>     for (ki in 1:length(input)){
>       The_title[[ki]]<-sprintf("XCH4 CH4 (ppb)",ki)
>     }
>   }
>   if(!is.list(input)){input=list(input)}
>  lon.ll     <- lonll               #lower left corner of grid
>  lat.ll     <- latll                #lower left corner of grid
>  lon.res    <- lonres               #resolution in degrees longitude
>  lat.res    <- latres            #resolution in degrees latitude
>
> for (ki in 1:length(input)){
> # plot for whole world
>   sh<-dim(input[[ki]]$avg)
>  numpix.x   <- sh[1]                 #number of pixels in x directions in
> grid
>  numpix.y   <- sh[2]                 #number of pixels in y directions in
> grid
>  #print(ki)
>  #print(input[[ki]]$avg)
>  mat        <- t(input[[ki]]$avg)# length
>  xs         <- seq(lon.ll,by=lon.res,length=dim(mat)[2])+0.5*lon.res
> #centers of cells
>  ys         <- seq(lat.ll,by=lat.res,length=dim(mat)[1])+0.5*lat.res
> #centers of cells
>  col=rich.colors(32)
>
>  xlims      <-c(-180,180)
>  ylims      <-c(-90,90)
>
>  old.par    <- par(no.readonly = TRUE)
>  par(mar=c(par()$mar[1:3],4))
>  cex.set    <- 1.2
>  par(cex=cex.set)
>  par(mgp=c(2.0,0.3,0))
>  par(tcl=-0.1)
>  opath     <- ("/Result/scitm3/") # path to save image
>  if(write_file){png(file=paste(opath,The_title[[ki]],".png",sep="
> "),width=1000,height=800,pointsize=23)}
>
>   if(!write_file){x11()}
>
> image.plot.fix(x=xs,y=ys,z=input[[ki]]$avg,zlim=c(1600,2000),nlevel=64,col=
> col,xlab="Longitude",ylab="Latitude",legend.width=0.03,
> offset=0.05,legend.only=F,lg=F)
>
> map(database = "world", add=TRUE,col="black")
>
>  title(paste(The_title[[ki]]))
>  if(write_file){dev.off()}
>
> }
> }
>
> when I try to use map(database = "world", add=TRUE,col="black")
> I get error
> Error in map(database = "world", add = TRUE, col = "black") :
>   unused argument(s) (database = "world")
>
> if I comment this line then I get plot but it does not have world border.
>
> I really got stuck at this point and I do not know how to fix it.
>
Well, you haven't provided a minimal reproducible example, so we can only guess what is in
/R/PlotGridded2DMap.R
/R/image.plot.fix.R
/R/image.plot.plt.fix.r
but my guess is you are redefining the map() function in there.

HTH,
Ray

______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
Reply | Threaded
Open this post in threaded view
|

Re: plotting border over map

uday
Hi Ray,
Thanks for reply
/R/PlotGridded2DMap.R
/R/image.plot.fix.R
/R/image.plot.plt.fix.r
are the functions those I wrote for plotting and they work with another data, but only I have some issue with only the codes those I provided before.
 and what do you mean by " I am redefining the map() function in there"?