我试图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=region来map_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)