gpt4 book ai didi

r - 在 R 中绘制特定州和省的 map

转载 作者:行者123 更新时间:2023-12-03 07:31:43 29 4
gpt4 key购买 nike

我正在尝试使用 R 为我的 FieldBio 项目生成包含示例位置的图形。到目前为止,我已经能够绘制我想要的美国各州的 map ,绘制加拿大(国家边界)的 map ,覆盖这两张 map ;不过,我想做的是专门绘制以下州/省的 map ,不包括其他州/省:加利福尼亚州内华达州犹他州科罗拉多州怀俄明州蒙大拿爱达荷州华盛顿俄勒冈州不列颠哥伦比亚省艾伯塔省

这是我迄今为止使用的代码:

>map('state', region = c('california', 'nevada', 'utah', 'colorado', 'wyoming', 'montana', 'idaho', 'oregon', 'washington'), xlim=c(-130,-90), ylim=c(30,60), fill=TRUE, col="gray95")

>map("worldHires","Canada", xlim=c(-130,-90), ylim=c(30,60), col="gray95", fill=TRUE, add=TRUE)

这会生成一张包含所需州的 map ,但加拿大作为一个国家(在我设置的分隔符处截断)。

有没有办法只做我想要的省份?我想我知道如何在此基础上绘制点(我将它们作为带有纬度和经度数据的 .csv)。

我意识到 ( R: creating a map of selected Canadian provinces and U.S. states ) 非常相似,但我在该特定示例的代码中有点迷失,并且我不需要突出显示任何具体内容。

谢谢

最佳答案

像这样吗?

library(raster)
states <- c('California', 'Nevada', 'Utah', 'Colorado', 'Wyoming', 'Montana', 'Idaho', 'Oregon', 'Washington')
provinces <- c("British Columbia", "Alberta")

us <- getData("GADM",country="USA",level=1)
canada <- getData("GADM",country="CAN",level=1)

us.states <- us[us$NAME_1 %in% states,]
ca.provinces <- canada[canada$NAME_1 %in% provinces,]

us.bbox <- bbox(us.states)
ca.bbox <- bbox(ca.provinces)
xlim <- c(min(us.bbox[1,1],ca.bbox[1,1]),max(us.bbox[1,2],ca.bbox[1,2]))
ylim <- c(min(us.bbox[2,1],ca.bbox[2,1]),max(us.bbox[2,2],ca.bbox[2,2]))
plot(us.states, xlim=xlim, ylim=ylim)
plot(ca.provinces, xlim=xlim, ylim=ylim, add=T)

因此,这使用 raster 包中的 getData(...) 函数从 GADM 站点获取美国各州和加拿大各省的 SpatialPolygonDataFrames。然后,它仅提取您想要的州(请注意,相关属性表字段为 NAME_1,并且州/省需要正确大写)。然后我们根据两个(子集化) map 的边界框计算 x 和 y 限制。最后我们渲染 map 。请注意在第二次调用 plot(...) 时使用了 add=T

这是一个 ggplot 解决方案。

library(ggplot2)
ggplot(us.states,aes(x=long,y=lat,group=group))+
geom_path()+
geom_path(data=ca.provinces)+
coord_map()

这里的优点是 ggplot 为您管理图层,因此您不必显式计算 xlimylim。此外,在我看来,添加额外层的灵 active 要大得多。缺点是,对于此类高分辨率 map (尤其是加拿大西海岸),速度慢得多

关于r - 在 R 中绘制特定州和省的 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24072075/

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