繁体   English   中英

在ggplot2中使用facet_wrap进行映射

[英]Maps with facet_wrap in ggplot2

我想通过ggplot2中的数据变量facet_wrap一个地图,例如下面例子中的'pets'。 这是否需要完全复制每个变量类别的强化地图数据? 那会让我觉得有点傻。 有替代方法吗?

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()

在此输入图像描述

你可以稍微调整一下美学:

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's 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's 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

在此输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM