簡體   English   中英

在ggplot中繪制nb對象?

[英]Plotting nb object in ggplot?

我想繪制英國的輪廓,以及我從空間點數據框生成的nb對象。

問題在於,英國的輪廓非常非常長,因為我的Rstudio不斷崩潰。 例如,要么加載很長時間,要么我的Rstudio停止響應。

library(raster)    
UK_gadm <- getData("GADM", country="GB", level=0)
    plot(UK_gadm)

所以我使用了這個解決方案中的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對象能夠在英國大綱的背景下進行繪圖 - 但是,這似乎只能在基礎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繪制英國的輪廓而不會使我的計算機與基礎R繪圖功能崩潰?

經過一整夜的努力,管理找到一個快速,簡單的解決方案。 希望這可以幫助其他有類似問題的人。

只是詳細說明目標:針對shapefile繪制鄰居對象(nb)。 這是為了可視化某些坐標之間的聯系。 經過一些谷歌搜索后,我認為這只能通過基礎R的繪圖功能來完成。 然而問題是加載一個國家的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的地圖包中有現成的淡化版本的地圖。 (對不起,如果你已經知道了 - 我還在學習!)

希望這有助於其他任何人!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM