世界地图ggplot2的边框和颜色

6
我正在尝试制作一个优雅的地图,显示组织有兴趣合作的国家。我已经制作了下面的地图,但希望通过去掉国界线使其更加精美,除非两个有兴趣的国家共享边界-例如南非和津巴布韦之间。我查阅了许多教程,但找不到相关信息。
最后,我想为城市数据添加一个图例。
以下是代码:
world <- map_data("world") 
countries <- read_excel("country_table.xlsx", sheet = 3) #table of coutries with interest

world3 <- merge(world, countries, all.x = TRUE)
world4 <- arrange(world4, order)

city <- read_excel("country_table.xlsx", sheet = 4) #city data
city$long <- as.numeric(city$long)
city$lat <- as.numeric(city$lat)

ggplot(world4, aes(x = long, y = lat, group = group, fill = interest)) +
  geom_polygon(col = "white") +
  #scale_fill_manual(breaks = c("interest", "past", "current"), values = c("#4dc11d","#26660b","#9def7a")) +
  theme_map() +
  coord_fixed(xlim = c(-130, 160), ylim = c(-50, 75), ratio = 1.3) +
  geom_point(data = city, aes(x= long, y = lat), shape = 21, inherit.aes = F, size = 2, col = "black", fill = "yellow")

生成:

输入图像描述

此外,我想使用绿色比例来表示国家,图例的顺序为:“兴趣”,“过去”,“现在”;从浅绿到深绿。目前,当我取消注释行“scale_fill_manual”时,我会失去所有NA数据,产生以下图片。我尝试通过多种方式添加此内容,但无法使其正常工作。为了清楚表达我的意思,这是当我取消该注释时代码所生成的内容:

输入图像描述

对于任何一个问题的帮助都将不胜感激。


你没有收到提供的颜色太少的错误吗?尝试在填充比例尺中设置“na.value”颜色。 - camille
我认为最好将这些作为单独的问题处理,因为您正在尝试完成多个离散任务,其中一些很可能已经有答案了。您需要做以下几件事情:1.合并/溶解形状,以消除非标记国家之间的边界;2.从虚拟美学中制作图例,以获得城市图例(这将需要发布一些数据);3.处理NA值并设置适当的填充比例尺。 - camille
1个回答

3

将图形分层构建。 这也应该解决 scale_fill_manual 问题,因为您的数据框中不会有 NA 值。

除了您已经完成的操作:

# subset for all countries that are filled by a color
library(dplyr)
world5 <- world4 %>% dplyr::filter(!is.na(interest))

ggplot() +
  # first layer: all countries, no fill, no white outlines
  geom_polygon(data = world4, 
               aes(x = long, y = lat, group = group)) +
  # second layer: only countries with a fill
  geom_polygon(data = world5, 
               aes(x = long, y = lat, group = group, fill = interest),
               color = "white") +
  # apply the color scale
  scale_fill_manual(breaks = c("interest", "past", "current"), 
                    values = c("#4dc11d","#26660b","#9def7a"))                 

1
谢谢,Rich Pauloo。这个工作得非常完美。添加geom_polygon与所有国家但没有填充和颜色(用于边框),然后在其上面添加另一个多边形以选择国家,解决了边框问题,并意味着scale_fill_manual命令起作用了。我将寻求解决城市图例问题,在另一篇帖子中,根据Camille的建议。 - MorrisseyJ
关于图例的问题已发布在这里 - MorrisseyJ

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接