3

I am trying to change the breaks of a raster in R that is shown with a continuous scale. However, changing just the breaks also changes the colour scale. I am not sure how I can fix this?

library(raster)
r <- raster(xmn=1, xmx=5, ymn=1, ymx=5, nrows=5, ncols=5)
r[] <- 1:length(r)

Normal plot:

plot(r)

enter image description here

Now just change the breaks, say to 21 instead of 20:

plot(r, breaks=c(0, 5, 10, 15, 21, 25))

enter image description here

Changing breaks also changed the colour!? Why? My guess is that now plot.raster() uses the 5 (or 25?) first colour of the colour ramp, which are all pretty much the same? The issues seems that it handles this now as a categorical colour palette? Indeed, giving a custom ramp equally spaced with 25 colours, it seems it only uses the first 6?

cols <- rev(terrain.colors(255))
plot(r, breaks=c(0, 5, 10, 15, 21, 25), 
 col=cols[round(seq(1,255,length.out=25))])

cols <- rev(terrain.colors(255))

Matifou
  • 2,011
  • 1
  • 21
  • 43
  • 1
    Use zlim = c(0, 25) instead (for a linear sequence), otherwise set the colours per interval as well. – mdsumner Sep 15 '17 at 10:25
  • How exactly would you use it @mdsumner ? zlim and breaks together doesn't seem to work? Thanks! – Matifou Sep 15 '17 at 17:25
  • Tney are not meant to work together (though I also see now that zlim is not documented, except for examples in ?plot). If you set breaks, give a col for each interval. If you only want to set the colours and an absolute but linear breaks range, use zlim+col. Your question isn't currently clear about what you want, so try plot(r, zlim = c(0, 25)) and please build from that in the q – mdsumner Sep 15 '17 at 23:42

1 Answers1

1

The rasterVis package (https://oscarperpinan.github.io/rastervis/) is the most effective and easiest way to plot raster data in R