geom_map"map_id"函数如何工作?

mom*_*822 9 r ggplot2

我试图geom_map弄清楚在ggplot2中的用法.

建立:

library(ggplot2)
library(maps)
county2 <- map_data("county")
Run Code Online (Sandbox Code Playgroud)

为什么这段代码:

ggplot() +
  geom_map(data=county2, map=county2, aes(x=long, y=lat, map_id=region), col="white", fill="grey")
Run Code Online (Sandbox Code Playgroud)

制作这个正确的情节: 在此输入图像描述

但改变map_id=regionmap_id=subregion做到这一点?

ggplot() +
  geom_map(data=county2, map=county2, aes(x=long, y=lat, map_id=subregion), col="white", fill="grey")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

hrb*_*str 15

geom_map() 是否为您记住数据框中的多边形.

亚历克斯正确的,map必须看起来像一个强化的空间物体.那就是"记住".map_id可以是包含其他图层标识符的任何列.

您的第一次调用geom_map()应该(通常)是"基础层",类似于您使用全面的GIS程序所做的,它具有多边形轮廓并且可能是基本填充.

其他调用geom_map()可以添加其他美学(包括其他shapefile).

以下是一些示例.

library(ggplot2)
library(maptools)
library(mapdata)
library(ggthemes)
library(tibble)
library(viridis)

us <- map_data("state")

choro_dat <- data_frame(some_other_name=unique(us$region),
                        some_critical_value=sample(10000, length(some_other_name)))

gg <- ggplot()
gg <- gg + geom_map(data=us, map=us,
                    aes(long, lat, map_id=region),
                    color="#2b2b2b", fill=NA, size=0.15)
gg <- gg + coord_map("polyconic")
gg <- gg + theme_map()
gg <- gg + theme(plot.margin=margin(20,20,20,20))
gg
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

county <- map_data("county")

gg <- ggplot()
gg <- gg + geom_map(data=county, map=county,
                    aes(long, lat, map_id=region),
                    color="#2b2b2b", fill=NA, size=0.15)
gg <- gg + coord_map("polyconic")
gg <- gg + theme_map()
gg <- gg + theme(plot.margin=margin(20,20,20,20))
gg
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

奇怪的县映射的原因是县名不是唯一的.

gg <- ggplot()
gg <- gg + geom_map(data=county, map=county,
                    aes(long, lat, map_id=subregion),
                    color="#2b2b2b", fill=NA, size=0.15)
gg <- gg + coord_map("polyconic")
gg <- gg + theme_map()
gg <- gg + theme(plot.margin=margin(20,20,20,20))
gg
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

请注意这map_id是不是region或者id它仍然有效.'b/c该列中的值是us$region.

gg <- ggplot()
gg <- gg + geom_map(data=us, map=us,
                    aes(long, lat, map_id=region),
                    color="#2b2b2b", fill=NA, size=0.15)
gg <- gg + geom_map(data=choro_dat, map=us,
                    aes(fill=some_critical_value,
                        map_id=some_other_name),
                    color="white", size=0.15)
gg <- gg + scale_fill_viridis(name="Value")
gg <- gg + coord_map("polyconic")
gg <- gg + theme_map()
gg <- gg + theme(plot.margin=margin(20,20,20,20))
gg <- gg + theme(legend.position=c(0.85, 0.2))
gg
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

请注意,我们可以使用不同的空间对象并围绕地图包裹轮廓:

outline <- map_data("usa")

gg <- gg + geom_map(data=outline, map=outline,
                    aes(long, lat, map_id=region),
                    color="black", fill=NA, size=1)
gg
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

最后一个:使用三个空间对象叠加在一起的复合材料.请注意,您prbly要使用像这样,如果你真的想要,因为它具有FIPS代码映射县(即每个县可以映射美学的唯一ID).

state <- map_data("state")
county <- map_data("county")
usa <- map_data("usa")

gg <- ggplot()
gg <- gg + geom_map(data=county, map=county,
                    aes(long, lat, map_id=region),
                    color="#2b2b2b", fill=NA, size=0.15)
gg <- gg + geom_map(data=state, map=state,
                    aes(long, lat, map_id=region),
                    color="#2166ac", fill=NA, size=0.5)
gg <- gg + geom_map(data=usa, map=usa,
                    aes(long, lat, map_id=region),
                    color="#4d9221", fill=NA, size=1)
gg <- gg + coord_map("polyconic")
gg <- gg + theme_map()
gg <- gg + theme(plot.margin=margin(20,20,20,20))
gg
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述