[英]Plotting Shapefile on ggmap
我試圖在通過 ggmap 生成的地圖上繪制幾個 shapefile。 這運行良好,但是我想將視圖區域限制為 shapefile(而不依賴於ggmaps
的zoom
參數)。 我通過獲取邊界框並將其作為參數傳遞給ggplot
的coord_cartesian
此coord_cartesian
雖然這有效,但我在地圖邊緣遇到了一些撕裂問題 - 尤其是在西部部分。 我試過手動調整 xy 坐標,但它似乎只會嚴重扭曲圖片。
我的想法是稍微縮小以允許在該區域中繪制整個 shapefile,但我似乎無法弄清楚。 我也有可能完全以錯誤的方式來處理這個問題。
這是我用來生成地圖的代碼。 形狀文件可以在這里下載
library(dplyr)
library(ggmap)
library(rgdal)
library(broom)
# Read in shapefile, project into long-lat
# Create 'tbox' which is a minimum bounding box around the shapefile
tracts <- readOGR(dsn = ".", layer = "CensusTracts2010") %>%
spTransform("+proj=longlat +ellps=WGS84")
tbox <- bbox(tracts)
# Plot data
tract_plot <- tidy(tracts)
DetroitMap <- qmap("Detroit", zoom = 11)
DetroitMap + geom_polygon(data = tract_plot, aes(x = long, y = lat, group = id), color = "black", fill = NA) +
coord_cartesian(xlim = c(tbox[1,1], tbox[1,2]),
ylim = c(tbox[2,1], tbox[2,2]))
我遵循了您的工作流程,這導致了與您上面提到的相同的問題。 然后我將qmap
選項的縮放qmap
從 11 更改為 10,它產生了更好的圖片,雖然您確實丟失了一些地名,但您可以使用annotate
手動添加它們:
DetroitMap <- qmap("Detroit", zoom = 10)
DetroitMap + geom_polygon(data = tract_plot, aes(x = long, y = lat, group = id), color = "black", fill = NA) +
coord_cartesian(xlim = c(tbox[1,1], tbox[1,2]),
ylim = c(tbox[2,1], tbox[2,2]))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.