given this reproducible example
# set the origin of the grid
# in cartesian coordinates (epsg 32632)
xmin<-742966
ymin<-5037923
# set x and y axis
x<-seq(xmin, xmin+25*39, by=25)
y<-seq(ymin, ymin+25*39, by =25)
# define a 40 x 40 grid
mygrid<-expand.grid(x = x, y = y)
# set the z value to be interpolated by the contour
set.seed(123)
mygrid$z<- rnorm(nrow(mygrid))
library(tidyverse)
# plot of contour is fine
ggplot(data=mygrid, aes(x=x,y=y,z=z))+
geom_contour()
library(ggspatial)
# transform coordinates to wgs84 4326
# (one of the possible many other ways to do it)
mygrid_4326<-xy_transform(mygrid$x, mygrid$y, from = 32632, to = 4326)
# create new grid with lon and lat
# (geographical coordinates espg 4326)
mygrid_4326<-mygrid_4326%>%
mutate(z=mygrid$z)
# define the bounding box
my_bb<-c(min(mygrid_4326$x), min(mygrid_4326$y),
max(mygrid_4326$x), max(mygrid_4326$y))
names(my_bb)<-c('left', 'bottom', 'right', 'top')
library(ggmap)
# get the background map (by a free provider)
mymap<-get_stamenmap(bbox = c(left = my_bb[['left']],
bottom = my_bb[['bottom']],
right = my_bb[['right']],
top = my_bb[['top']]),
zoom = 15,
maptype = 'toner-lite')
# plot of the map is fine
mymap%>%
ggmap()
# overlay the contour of z is failing
mymap%>%
ggmap()+
#geom_contour(data=mygrid_4326, mapping=aes(x = x, y = y, z = z))
stat_contour(data=mygrid_4326, mapping=aes(x = x, y = y, z = z))
Warning messages:
1: stat_contour(): Zero contours were generated
2: In min(x) : no non-missing arguments to min; returning Inf
3: In max(x) : no non-missing arguments to max; returning -Inf
Now I'm searching for a viable solution to accomplish the overlay of a contour plot made with ggplot to a base map made with ggmap; it seems not possible for some reasons I do not fully understand;
might it be related to the transformation of coordinates affecting somehow the shape of the grid (becoming not perfectly regular)?
This post: Plotting contours on map using ggmap seems close to the core of the problem but not yet giving a definitive solution (if it exists)
If possibile I would like to stay within the ggplot (tidyverse) facilities without resorting to the base R's functions (e.g. contourLines).
Thank you for your help