Search code examples
rscatter-plotraster

ScatterPlot between two rasters, giving color from a third raster


I'm plotting two rasters data, producing the image below.

I'd like to color each point in the graph with a variable taken from a third raster data (with the same bbox, pixel size etc.). Any ideas from R-Users? This operation is very easy in plotting data from a dataset, but I don’t know about raster…

Here I attach the code (simplified, I think you don't need all the plot parameters e.g. abline, xlab and so on) that produced the image:

plot(mask(raster1, my_mask,maskvalue=0), #first raster, masked by my_mask
      mask(raster2, my_mask,maskvalue=0),  #second raster, masked by my_mask           
      col = alpha('black', 0.1), #the current color scheme     
      )
 raster3 #raster with categorical variable, 
         #that should give the colors to the points in the graph

Thanks a lot! plot betwween two raster


Solution

  • With the xyplot method defined in rasterVis you can use layers of a RasterStack as if they were columns of a data.frame. Therefore, they can be the components of the formula or the groups argument.

    For example,

    library(raster)
    library(rasterVis)
    
    f <- system.file("external/test.grd", package="raster")
    r <- raster(f)
    r2 <- r + 500 * init(r, rnorm)
    ## categorical variable
    r3 <- cut(r, 3)
    
    s <- stack(r, r2, r3)
    names(s) <- c('r', 'r2', 'r3')
    
    xyplot(r ~ r2, groups = r3, data = s,
           auto.key = list(space = 'right'),
           alpha = 1)
    

    scatterplot