Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to invert the colors of a ggmap raster image in R?

I'm assuming the Raster package has what I need... I'm simply wanting to invert the colors in a Raster image.

The actual scenario is this: I want to invert the raster image returned by a ggmap call:

 library(ggmap)
 ggmap(get_stamenmap(maptype = "toner"))

Regular toner map

I want to invert the colors to get a white-on-black version of the Stamen Toner map:

Inverted toner map

like image 394
dancow Avatar asked Sep 08 '15 18:09

dancow


1 Answers

This inverts the raster object returned by get_stamenmap()

library("ggmap")
m <- get_stamenmap(maptype = "toner")

# invert colors in raster
invert <- function(x) rgb(t(255-col2rgb(x))/255)    
m_inv <- as.raster(apply(m, 2, invert))

# copy attributes from original object
class(m_inv) <- class(m)
attr(m_inv, "bb") <- attr(m, "bb")

ggmap(m_inv)

ggmap inverted

like image 94
rcs Avatar answered Oct 22 '22 07:10

rcs