首页 > 解决方案 > 用第二层符号叠加地图

问题描述

我在 R 中创建了一张世界地图,它根据数据集中的变量突出显示了一些国家。我现在想在世界地图上添加另一层符号。该数据集包含六个额外的虚拟变量。对于其中任何一个为“1”,我希望在地图上放置一个符号。这可能吗?谁能指出我的解决方案/应用程序/命令来做到这一点?

这是我的数据集的程式化版本。对于符号 1-6 = 1 的所有国家/地区,除了已经应用的颜色之外,我还希望在地图上添加一个实际的符号或注释。

library(tidyverse)
library(sf)
library(rvest)
library(stringr)
library(scales)
library(viridis)

map.world <- map_data('world')

map.world<-map.world[!(map.world$region=="Antarctica"),]

a <- c("Belgium", "Canada", "USA", "UK")
symbol1 <- c(1, 0, 1, 0)
symbol2 <- c(0, 1, 1, 0)
symbol3 <- c(0, 0, 1, 1)
symbol4 <- c(1, 0, 0, 0)
symbol5 <- c(1, 1, 1, 1)
symbol6 <- c(0, 0, 1, 0)

mapping <- data.frame(a, symbol1, symbol2, symbol3, symbol4, symbol5, symbol6)
mapping$country <- "YES"

plot_data <- left_join(map.world, mapping, by = c('region' = 'a'))

plot_data$country[is.na(plot_data$country)] <- "NO"

p <-  ggplot(plot_data, aes( x = long, y = lat, group = group)) +
  geom_polygon(aes(fill = country)) 

p + theme(legend.position="bottom",
           axis.line=element_blank(),axis.text.x=element_blank(),
           axis.text.y=element_blank(),axis.ticks=element_blank(),
           axis.title.x=element_blank(),
           axis.title.y=element_blank(),
           panel.background = element_blank(), panel.border=element_blank(),panel.grid.major=element_blank(),
           panel.grid.minor=element_blank(),plot.background=element_blank()) +
  scale_fill_manual(name="", values=c("#ADD8E6", "#00008B", "#E5E4E2"))

在此处输入图像描述

标签: rmaps

解决方案


推荐阅读