Maps with facet_wrap in ggplot2

I want facet_wrap to plot a map using a data variable in ggplot2 - for example. "pets" in the example below. Does this require complete duplication of fortified map data for each category of variables? It would hit me somehow stupid. Is there an alternative method?

require(ggplot2) (nz_dat = data.frame(island = rep(c('North.Island ','South.Island '), 3), pets = c('cats','cats','dogs','dogs','birds','birds'), n = c(13, 26, 48, 74, 24, 17))) island pets n 1 North.Island cats 13 2 South.Island cats 26 3 North.Island dogs 48 4 South.Island dogs 74 5 North.Island birds 24 6 South.Island birds 17 nz = map_data("nz") nz = subset(nz, nz$region %in% c('North.Island ','South.Island ')) # 2 main islands # simple plot ggplot(nz, aes(long, lat, group=group, fill=factor(region))) + geom_polygon() + coord_quickmap() 

enter image description here

+6
source share
1 answer

You can change the aesthetics a bit:

 library(ggthemes) # for theme_map gg <- ggplot() # lay down a base map (no borders or fills) # geom_map is a great way to do map layers like you would in any GIS gg <- gg + geom_map(data=nz, map=nz, aes(x=long, y=lat, map_id=region), color="#00000000", fill="#0000000", size=0.5) # since "island" equates to the "nz" map id of "region" use that # to "map" (in the data operation sense) the value in "n" to the # named polygon gg <- gg + geom_map(data=nz_dat, map=nz, aes(fill=n, map_id=island, color=n)) # it highly unlikely these values needed a continuous scale # so use a shortcut to colorbrewer with scale_*_distiller, scaling # both the color & fill so there are no black borders gg <- gg + scale_fill_distiller() gg <- gg + scale_color_distiller() # the OP did good here since it better than Mercator for # NZ and NZMG coord system is not avail with coord_map() gg <- gg + coord_quickmap() # ggplot will make many maps! gg <- gg + facet_wrap(~pets) # ggplot will make clean maps! gg <- gg + theme_map() # put the legend wherever you want gg <- gg + theme(legend.position="right") gg 

enter image description here

+13
source

All Articles