首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在地图上为特定国家/地区上色

如何在地图上为特定国家/地区上色
EN

Stack Overflow用户
提问于 2019-06-20 00:28:46
回答 2查看 531关注 0票数 2

我需要在一张裁剪过的中美洲世界地图上只给哥斯达黎加上色。

我已经写的代码包含在下面……我希望能够使用ggplot2和sf库来做到这一点。

代码语言:javascript
复制
library("ggplot2")
theme_set(theme_bw())
library("sf")
library("rnaturalearth")
library("rnaturalearthdata")
library("maps")
world <- ne_countries(scale='medium',returnclass = 'sf')
class(world)


(CentralAmerica <- ggplot(data = world) +
  geom_sf()  +
  coord_sf(xlim = c(-60, -120), ylim = c(5, 35), expand = FALSE) +
  scale_fill_viridis_d(option = "plasma") +
  theme(panel.background = element_rect(fill = "azure"),
     panel.border = element_rect(fill = NA)))
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-20 05:47:13

这里有一种方法。我为哥斯达黎加创建了一个新的数据表,以便更容易获取纬度和经度,然后将其命名为geom_polygon:

代码语言:javascript
复制
library("ggplot2")
theme_set(theme_bw())
library("sf")
library("rnaturalearth")
library("rnaturalearthdata")
library("maps")
library("data.table")
world <- ne_countries(scale='medium',returnclass = 'sf')
class(world)

CR_DT <- world[world$name == "Costa Rica",]
CR_DT2 <- as.data.table(CR_DT)[, unlist(geometry)]
CR_DT3 <- setNames(data.table(matrix(nrow = 133, ncol=2)), c("lng", "lat"))
CR_DT3$lng <- CR_DT2[1:133]
CR_DT3$lat <- CR_DT2[134:266]

(CentralAmerica <- ggplot(data = world) +
geom_sf()  +
coord_sf(xlim = c(-60, -120), ylim = c(5, 35), expand = FALSE) +
scale_fill_viridis_d(option = "plasma") +
theme(panel.background = element_rect(fill = "azure"),
      panel.border = element_rect(fill = NA)) +    
geom_polygon(data=CR_DT3, aes(x=lng, y=lat, fill="blue"), colour="red"))

票数 0
EN

Stack Overflow用户

发布于 2021-04-14 15:37:52

一种更有效的方法是将if()ifelse()语句包含在:

代码语言:javascript
复制
geom_sf(fill = ifelse(world$geounit == "Costa Rica", 'red', 'blue'))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56672192

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档