r-在ggplot地图中按类型重新排列sf多边形



我正试图使用sf包和ggplot将矢量对象从shp文件绘制到地图上。基本上:我创建了相关区域(美国西海岸(的基本地图,然后下载了显示鲸目动物生物重要区域(BIA(的相关形状文件(来自:https://cetsound.noaa.gov/important)。我为相关地区(美国西海岸(和地区类型(觅食和迁徙(对.shp文件进行了细分。我重新排序了bia_select列表,这样迁移区域就会排在第一位。然后我将BIA分层到地图上,按类型着色。这是代码和生成的映射。

# useful on MacOS to speed up rendering of geom_sf() objects
if (!identical(getOption("bitmapType"), "cairo") && isTRUE(capabilities()[["cairo"]])
{options(bitmapType = "cairo")
}    

#base map
boundaries <- data.frame(x1 = c(-125.5, -125.5, -125.5), y1 = c(34.448, 36.306, 37.948), x2 = c(-120.472, -121.901, -122.785), y2 = c(34.448, 36.306, 37.948))#create gridpoints for regional boundaries

states <- sf::st_as_sf(map("state", plot = FALSE, fill = TRUE))#state lines and coast
CAfromstates <- states %>%
subset(., states$ID == "california")

world <- ne_countries(scale = "medium", returnclass = "sf")#national boundaries
#import data
biaf <- st_read("/Users/elizaoldach/Desktop/CetMap_BIA_WGS84-1/CetMap_BIA_WGS84.shp")

#select geography and area types
bia_select <- biaf  %>%
filter(region %in% c("West Coast"),
BIA_type %in% c("Feeding", "Migration"))
#reorder features so migration comes first  
bia_select_ordered <- bia_select[order(bia_select$OBJECTID, decreasing=FALSE),]
#choose colors
bia_colors <- c("plum2", "#CAB7A500")

#create map
map3 <- ggplot() +
geom_sf(data = world, fill = "#CAB7A5") +
geom_sf(data = states, fill = "#CAB7A5") +
geom_sf(data = bia_select_ordered, alpha=0.5, aes(fill=BIA_type)) +
scale_color_manual(values=bia_colors)+
labs(fill="BIA Type")+
coord_sf(
xlim = c(-130,-108),
ylim = c(22, 51),
expand = FALSE
)+
theme_classic()
map3

在此处输入图像描述

这张地图的问题是,迁徙区域(蓝色,较大(被绘制在觅食区域(粉色,较小(的顶部。我想把这个画出来,这样喂食区就在上面了。重新排列列表以使迁移区域排在第一位并没有帮助。我想它一定相对简单,但我还没能破解这个!有人有什么建议吗?

感谢您的回复。问题似乎是BIA_type仍然是一个字符,所以重新排序不起作用。这是一个简单的解决方案:

#check class of variable    
class(bia_select$BIA_type) 
#BIA_type is character, change to factor and specify levels 
bia_select$BIA_type<-factor(bia_select$BIA_type, levels=c("Migration","Feeding"))

这样,我就可以重新运行ggplot代码,并最终得到一张地图,其中喂食区域位于迁移区域之上。

相关内容

  • 没有找到相关文章

最新更新