2017-05-28 1 views
1

Ich versuche, eine Karte von ggmap vor einem Raster zu plotten. Diese Karte hat eine Menge weißer Fläche, also wollte ich die weiße Fläche transparent machen, so dass ich die restlichen Elemente mit ggplot über einem bunten Raster darstellen kann. Hier ist die Karte:plot ggmap Bild über Raster

Fulanus_bbox <- c(left = 17.250000, bottom = -3.916667, right = 36.916667, top = 8.416667) 
Fulanus_big <- ggmap::get_map(location = Fulanus_bbox, source = "stamen", maptype = "toner-lite") 
map <- ggmap::ggmap(Fulanus_big) 
map 

Alles, was ich von waren diese beiden Lösungen denken konnte, was ich nicht erwartet hatte, zu arbeiten und sie tat es nicht. Ich habe versucht, auf der Karte um die Hex-Codes ersetzt:

map_colors <- map$layers[[2]]$geom_params$raster 
map_colors[map_colors == '#FFFFFF'] <- '#00FFFFFF' 
map$layers[[2]]$geom_params$raster <- map_colors 
map 

Ich habe auch versucht, die Farben in einem Raster-Umwandlung zu sehen, ob das Muster beibehalten wurde:

maprow <- nrow(map_colors) 
mapcol <- ncol(map_colors) 
map_factors <- as.factor(map_colors) 
map_numeric <- as.numeric(map_factors) 
map_matrix <- matrix(map_numeric, nrow = maprow, ncol = mapcol) 
map_raster <- raster::raster(map_matrix) 
map_raster <- raster::setExtent(map_raster, Fulanus_bbox) 
raster::crs(map_raster) <- "+proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0 " 
raster::plot(map_raster) 

Ist das möglich zu machen? Wenn es ist, wie?

+0

Probieren Sie '# FFFFFF00' anstatt '# 00FFFFFF' –

+0

Danke! Ich dachte, der Code für Alpha kam zuerst –

Antwort

0

Diese Karte hat eine Menge von weißen Bereich, also wollte ich den weißen Bereich transparent machen [...]

Dies scheint zu funktionieren:

map <- ggmap::ggmap(Fulanus_big) 
r <- map$layers[[2]]$geom_params$raster 
r[r=="#FFFFFF"] <- NA 
map$layers[[2]]$geom_params$raster <- r 
map 

enter image description here

+0

Danke! So offensichtlich... –