gpt4 book ai didi

r - 使用 ggplot2 在 R 中组合多个 map

转载 作者:行者123 更新时间:2023-12-02 03:29:55 24 4
gpt4 key购买 nike

这是我面临的问题的可重现示例。我正在尝试在多个阶段使用 ggplot2 创建 map 。这是我面临的问题。考虑数据border与美国墨西哥边境各州的多边形,以及 border.county与这些州的县的多边形。下面的代码可以让你获取数据:

library(maps)
library(ggmap)
library(ggplot2)

USA <- get_googlemap(center = 'usa', zoom = 4,
style = 'administrative|element:labels|visibility:off')

us.df <- map_data("state")
border <- subset(us.df,
region %in% c("california","arizona","new mexico","texas"))

counties <- map_data("county")
border.county <- subset(counties,
region %in% c("california","arizona","new mexico","texas"))

现在我想创建一个 map ,以 Google map 的 map 为背景,并包含州多边形和县边界。如果我执行以下操作,它就会正常工作:

Allmap <- ggmap(USA) + 
geom_polygon(aes(x = long, y = lat, fill = region, group = group),
data=border, color = "white") +
geom_polygon(aes(x = long, y = lat, group = group),
data=border.county, fill=NA, color="red")

现在,如果我想分多个阶段创建这张 map ,我就会遇到问题。我只想要县边界作为背景信息(作为某种“经常出现的主题”),并且我将创建多个包含州一级不断变化的信息的 map 。因此,我创建了带有县的“背景 map ”,效果很好:

Countmap <- ggmap(USA) + 
geom_polygon(aes(x = long, y = lat, group = group),
data=border.county, fill=NA, color="red")

现在我尝试将其与州 map 结合起来:

Statmap <- ggmap(USA) + 
geom_polygon(aes(x = long, y = lat, fill = region, group = group),
data=border, color = "white") +
Countmap

这给了我错误:

 Error: Don't know how to add o to a plot

我该如何解决这个问题?我可以用其他方式组合 map (如: Statmap <- Countmap + geom_polygon(aes(x = long, y = lat, fill = region, group = group), data=border, color = "white") );然而,这将这些县置于州边界之下。

我也知道这个具体问题有一个简单的解决方案,只需首先绘制各州的 map ,然后在第二阶段将其与各县结合起来。然而,在我的真实场景中,这不是一个选择,因为 map 的反复出现的主题是需要绘制在第二位的东西:城市和地理边界(就像我这里的县边界)。

这是我要创建的 map :

enter image description here

最佳答案

如果我正确理解您的描述,您不想合并 map 。您想要组合图层,具体来说,是将县轮廓覆盖在不断变化的州级 map 上。

试试这个:

# define county outlines as a geom_polygon layer
county.layer <- geom_polygon(aes(x = long, y = lat, group = group),
data = border.county, fill = NA, color = "red")

# add county.layer as the last layer to your state-level map
Statmap <- ggmap(USA) +
geom_polygon(aes(x = long, y = lat, fill = region, group = group),
data=border, color = "white") +
county.layer

Statmap

single-layer plot

编辑回复评论

如果您要绘制多个县图层,请将它们放入列表中:

border.county2 <- subset(counties, region %in% c("montana")) 

layer2 <- list(geom_polygon(aes(x = long, y = lat, group = group),
data = border.county2, fill = NA, color = "blue"),
geom_polygon(aes(x = long, y = lat, group = group),
data = border.county, fill = NA, color = "red"))

Statmap <- ggmap(USA) +
geom_polygon(aes(x = long, y = lat, fill = region, group = group),
data=border, color = "white") +
layer2

multi-layer plot

关于r - 使用 ggplot2 在 R 中组合多个 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52151087/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com