0

I'm trying to use the rayshader package in R to produce an elevation plot with points on the surface (or floating just above) that represent where samples were taken. However, I can't seem to get the points to show up on the map, or when they do, they don't show up where I expect them.

Here's a toy example:

library(raster)
set.seed(1)
x <- raster(ncol=50, nrow=50, xmn=-1, xmx=1, ymn=-1, ymx=1)
res(x) <- .5
x[] <- rnorm(16, -5, 10)
fakepoints <- data.frame(x = c(0, -.5),
                         y = c(0, 0))
fakepoints$elev <- (raster::extract(x, fakepoints))
x_dat <- data.frame(rasterToPoints(x, spatial = T))
library(rayshader)
library(ggplot2)
e_mat = raster_to_matrix(x)
a <- ggplot()+
  geom_tile(data =x_dat, aes(x =x, y = y, fill = layer ))+
  scale_fill_gradientn(colors = rev(topo.colors(10)))

height <- plot_gg(a, multicore = TRUE, raytrace = TRUE, width = 7, height = 4, 
             scale = 300, windowsize = c(1400, 866), zoom = .5, theta = 30, max_error = 0.001,save_height_matrix = T)

render_points(extent = attr(x,"extent"),
              size = 10,
              color = "black", 
              heightmap = height,
              altitude = fakepoints$elev+.1,
              zscale = 1,
              offset = 0,
              lat = fakepoints$y, long = fakepoints$x, 
              clear_previous = T)

The points should show up at (0,0) and (-.5, 0), but I can't see to make them appear anywhere.

Phil
  • 7,287
  • 3
  • 36
  • 66

0 Answers0