dancow
dancow

Reputation: 3388

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

Upvotes: 6

Views: 1366

Answers (1)

rcs
rcs

Reputation: 68849

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

Upvotes: 11

Related Questions