Kev*_*vin 5 maps r ggplot2 r-sf
我想将共享颜色更改为不同的颜色,比如说红色。到目前为止,我正在绘制德国联邦州巴伐利亚并触及奥地利各州。我从https://gadm.org/download_country.html获取数据-
\n德国 2 级 - https://biogeo.ucdavis.edu/data/gadm3.6/Rsf/gadm36_DEU_2_sf.rds
\n德国 1 级 - https://biogeo.ucdavis.edu/data/gadm3.6/Rsf/gadm36_DEU_1_sf.rds
\n奥地利 2 级 - https://biogeo.ucdavis.edu/data/gadm3.6/Rsf/gadm36_AUT_2_sf.rds
\n奥地利 1 级 -\n https://biogeo.ucdavis.edu/data/gadm3.6/Rsf/gadm36_AUT_1_sf.rds
\nlibrary("sf")\nlibrary("raster")\nlibrary("dplyr")\nlibrary("spData")\nlibrary("spDataLarge")\nlibrary("ggplot2")\nlibrary("patchwork")\nlibrary(tmap) # for static and interactive maps\nlibrary(ggpattern)\n\ndata_aut <- readRDS("~/plot_at_ger/data/gadm36_AUT_2_sf.rds")\ndata_ger <- readRDS("~/plot_at_ger/data/gadm36_DEU_2_sf.rds")\ndata_aut_high <- readRDS("~/plot_at_ger/data/gadm36_AUT_1_sf.rds")\ndata_aut_high <- data_aut_high[which(data_aut_high$NAME_1==\'Salzburg\' | data_aut_high$NAME_1==\'Ober\xc3\xb6sterreich\' | data_aut_high$NAME_1==\'Tirol\' | data_aut_high$NAME_1==\'Vorarlberg\'), ]\ndata_ger_high <- readRDS("~/plot_at_ger/data/gadm36_DEU_1_sf.rds")\ndata_ger_high <- data_ger_high[which(data_ger_high$NAME_1==\'Bayern\'), ]\n\nggplot() +\n geom_sf(data = ger_selected_data_bavaria, fill = NA) +\n geom_sf(data = aut_selected_data_rel, fill = NA) +\n geom_sf(data = data_aut_high, fill = NA, size = 1, color = "grey35") +\n geom_sf(data = data_ger_high, fill = NA, size = 1, color = "black") \nRun Code Online (Sandbox Code Playgroud)\n这会产生下图:
\n
有没有办法改变共享边框的颜色?
\n谢谢!
\n在 > 1.0 的环境中绘制共享边界有点棘手{sf},因为它使用 s2 依赖项进行球形操作,并且 s2 库引入了半封闭多边形的新概念(在 GEOS 年代还没有)。
请参阅https://r-spatial.github.io/s2/reference/s2_options.html#model了解更多信息。
无论如何,请考虑这段代码,它构建在{giscoR}包上以访问 EU NUTS 区域并sf::st_intersection()找到共享边界。请注意(即所有多边形都包含其整个边界)的使用model = "closed",这可能不是立即显而易见的,但对于代码按预期工作是必要的。
library(dplyr)
library(ggplot2)
library(giscoR)
library(sf)
bavaria <- gisco_get_nuts(country = "DE",
nuts_level = "1") %>%
filter(NUTS_NAME == "BAYERN")
austria <- gisco_get_nuts(country = "AT",
nuts_level = "2")
shared_border <- st_intersection(bavaria,
austria,
model = "closed") # this line is important!
ggplot() +
geom_sf(data = bavaria, fill = NA, color = "gray40") +
geom_sf(data = austria, fill = NA, color = "gray40") +
geom_sf(data = shared_border, fill = NA, color = "red")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
473 次 |
| 最近记录: |