我想绘制UK的轮廓以及从空间点数据框中生成的nb对象。
问题在于,英国的轮廓绘制需要非常非常长的时间-它一直使我的Rstudio崩溃。例如,这可能需要很长时间才能加载,或者我的Rstudio只是停止响应。
library(raster)
UK_gadm <- getData("GADM", country="GB", level=0)
plot(UK_gadm)
所以我求助于solution上的ggplot2,使用以下命令可以在不到一秒钟的时间内获得英国的轮廓:
library(ggplot2)
UK <- map_data(map = "world", region = "UK") # changed map to "world"
ggplot(data = UK, aes(x = long, y = lat, group = group)) +
geom_polygon() +
coord_map()
现在的问题是,我希望在英国轮廓的背景下绘制nb对象-但是,这似乎只能在以for example为底的R中实现:
plot(orotl.shp, xlim=c(-125, -115), ylim=c(42,47))
plot(orstationc.neighbors.dist, orstationc.loc, add=T, lwd=2, col="blue")
有什么办法可以在ggplot中绘制nb个对象吗?还是有一种方法可以使R绘制UK的轮廓而又不会使基本的R plot函数使计算机崩溃?
答案 0 :(得分:0)
经过一整夜的努力,设法找到了快速,简单的解决方案。希望这对遇到类似问题的人有所帮助。
仅详细说明目标:针对shapefile绘制邻居对象(nb)。这是为了可视化某些坐标之间的联系。经过一番谷歌搜索,我认为这只能通过基数R的plot函数来完成。但是,问题是正在加载一个国家的shapefile(从官方来源/ gadm下载),它太大了。
要解决此问题,请通过maps包获取一张更通用,更简单的国家地图,将其转换为shapefile,然后将其与邻居对象一起绘制。
代码如下:
library(spdep)
# get your neighbour object from your spatial points df
rest_neighbours <- dnearneigh(rest_spdf,0,1)
library(maps)
# get boundary of UK
UK_map <- sf::st_as_sf(maps::map(database='world',regions='UK', plot = FALSE, fill = TRUE))
# write to shapefile
st_write(UK_map, 'shapefiles/UK.shp')
# henceforth, we can just call the shapefile
UK <- readOGR('shapefiles/UK.shp')
# plot the boundary and the neighbours
plot(UK)
plot(rest_neighbours, rest_coords, add=T, lwd=2, col="blue")
我没有意识到官方边界文件经常非常详细,这也意味着它们确实很大,我很高兴r的地图包中提供现成的淡化地图版本。 (抱歉,如果您已经知道-我还在学习!)
希望这对其他人有帮助!