Dear Georgi Thanks a lot for the suggestion. I have now imported rgdal and moved it from Suggests of Imports. However, this did not solve my problem. I also tried importing 'plot' directly from rgdal, but then I got the error: object ‘plot’ is not exported by 'namespace:rgdal'
Best, Jacob > On 14 Apr 2021, at 15.24, Georgi Boshnakov > <[email protected]> wrote: > >> library(DEPONS2R) >> >> data("bathymetry") >> plot(bathymetry) >> data("coastline") >> library(rgdal) >> # Change projection of coastline to match that of bathymetry data >> coastline2 <- spTransform(coastline, crs(bathymetry)) plot(coastline2, >> add=TRUE, col="lightyellow2") > > The inclusion of 'library(rgdal)' above suggests that your plot method needs > something from 'rgdal'. If that something is a plot method from that package, > it may not be visible from your function (due to changes introduced in > R-4.0.0, search NEWS for R-4.0.0 'plot'), you would need to import plot > methods from rgdal if that is the case (and maybe move rgdal from Suggests to > Imports). > > Georgi Boshnakov > > > -----Original Message----- > From: R-package-devel <[email protected]> On Behalf Of > Duncan Murdoch > Sent: 14 April 2021 13:45 > To: Jacob Nabe-Nielsen <[email protected]>; [email protected] > Subject: Re: [R-pkg-devel] Problem with S4 method for plotting a raster file > > On 14/04/2021 5:41 a.m., Jacob Nabe-Nielsen wrote: >> Dear all, >> >> I have just discovered an error in a package that I have already >> uploaded to CRAN, and cannot figure out how to fix it. All help will be >> greatly appreciated. >> The package is called DEPONS2R, and is available from: >> https://cran.r-project.org/web/packages/DEPONS2R/index.html >> >> The problem is related to one of the included examples, where I plot >> the coastline on top of a raster file. In the example, where the >> plotting is embedded in an S4 method called plot.DeponsRaster, the >> coastline does not show. But if I run the functions that the method is >> composed of, everything works fine (see below). So I am wondering if >> the graphics devise is not passed on correctly within the package, or what >> actually happens. >> >> The example that does not run correctly is available from ?plot.DeponsRaster: >> >> library(DEPONS2R) >> >> data("bathymetry") >> plot(bathymetry) >> data("coastline") >> library(rgdal) >> # Change projection of coastline to match that of bathymetry data >> coastline2 <- spTransform(coastline, crs(bathymetry)) plot(coastline2, >> add=TRUE, col="lightyellow2") >> >> >> Here the coastline is not plotted. The method is defined as: >> >> >> setMethod("plot", signature("DeponsRaster", "ANY"), >> function(x, y, maxpixels=500000, col, alpha=NULL, colNA=NA, >> add=FALSE, >> ext=NULL, useRaster=TRUE, interpolate=FALSE, addfun=NULL, >> nc, nr, maxnl=16, main, npretty=0, axes=TRUE, >> legend=TRUE, trackToPlot=1, ...) { >> oldpar <- graphics::par(no.readonly = TRUE) >> on.exit(graphics::par(oldpar)) >> if (missing(main)) { >> main <- paste(x@landscape, x@type, sep=" - ") >> } >> # Define colours specific or 'type' >> if(missing(col) && x@type=="bathymetry") { >> tmp.col <- grDevices::rainbow(1000)[501:800] >> col <- c(tmp.col[1:100], rep(tmp.col[101:250], each=5)) >> } >> # Use {raster}-package for plotting >> if(x@crs=="NA") { >> crs2 <- sp::CRS(as.character(NA)) >> } else { >> crs2 <- sp::CRS(x@crs) >> } >> rdata <- raster::raster(x=x@data, xmn=x@ext$xleft, >> xmx=x@ext$xright, >> ymn=x@ext$ybottom, ymx=x@ext$ytop, >> crs=crs2) >> raster::plot(rdata, col=col, main=main, >> alpha=alpha, add=add, ext=ext, axes=axes, >> legend=legend) >> } >> ) >> >> >> But when I use the functions that are at the core of this method it is >> not a problem adding the coastline correctly: >> >> x <- bathymetry >> crs2 <- raster::crs(x@crs) >> rdata <- raster::raster(x = x@data, xmn = x@ext$xleft, xmx = >> x@ext$xright, ymn = x@ext$ybottom, ymx = x@ext$ytop, crs = crs2) >> raster::plot(rdata) >> plot(coastline2, add=TRUE, col="lightyellow2") >> >> If would be fantastic if someone can figure out how I should modify >> the method to plot the coastline correctly on top of the map. >> >> > > I'm not sure exactly what is going wrong, but if you plot the coastline first > and the bathymetry second, things do show up. Maybe that's enough of a hint > for you: > > library(DEPONS2R) > data("coastline") > library(rgdal) > coastline2 <- spTransform(coastline, crs(bathymetry)) plot(coastline2, > col="lightyellow2") > > data("bathymetry") > plot(bathymetry, add=TRUE) > > This puts the legend on top of the plotted coastline data, so my guess is > that the limits of the bathymetry plot aren't being made available to the > coastline plot when you do things in the original order. > > Duncan Murdoch > > ______________________________________________ > [email protected] mailing list > https://stat.ethz.ch/mailman/listinfo/r-package-devel ______________________________________________ [email protected] mailing list https://stat.ethz.ch/mailman/listinfo/r-package-devel
