如何使用 R 绘制世界地图

Rhe*_*ter 4 r country-codes ggplot2 geom

我正在开展一个项目,其中一小部分是绘制一张世界地图,其中包含我列表中的 135 个国家/地区。我还有一个清单,上面写着它们是否已开发。

我如何在世界地图上用不同的颜色来表示发展状态?

我的数据看起来像这样

Country        Code      Developed
Brazil         BRA         1
Singapore      SIN         3
France         FRA         1
Poland         POL         2
Run Code Online (Sandbox Code Playgroud)

我从另一个问题中获取了下面的图片,但理想情况下,它看起来像这样,但有更多的国家和 3 种不同的颜色。

谢谢

在此输入图像描述

小智 10

首先你需要安装软件包:

\n
install.packages(c("cowplot", "googleway", "ggplot2", "ggrepel", \n"ggspatial", "libwgeom", "sf", "rnaturalearth", "rnaturalearthdata")\n
Run Code Online (Sandbox Code Playgroud)\n

之后我们将加载所有地图所需的基本包,即 ggplot2 和 sf。我们还建议对 ggplot2 (theme_bw) 使用经典的深色主题,该主题适用于地图:

\n
library("ggplot2")\ntheme_set(theme_bw())\nlibrary("sf")\nlibrary("rnaturalearth")\nlibrary("rnaturalearthdata")\n\nworld <- ne_countries(scale = "medium", returnclass = "sf")\nclass(world)\n\n## [1] "sf"  \n## [1] "data.frame"\n
Run Code Online (Sandbox Code Playgroud)\n

之后我们可以:

\n
ggplot(data = world) +\n    geom_sf()\n
Run Code Online (Sandbox Code Playgroud)\n

结果会是这样的:

\n

在此输入图像描述

\n

在它之后,我们可以添加以下内容:

\n
ggplot(data = world) +\n    geom_sf() +\n    xlab("Longitude") + ylab("Latitude") +\n    ggtitle("World map", subtitle = paste0("(", length(unique(world$NAME)), " countries)"))\n
Run Code Online (Sandbox Code Playgroud)\n

图表显示如下:

\n

在此输入图像描述

\n

最后,如果我们想要一些颜色,我们需要这样做:

\n
ggplot(data = world) +\n    geom_sf(aes(fill = pop_est)) +\n    scale_fill_viridis_c(option = "plasma", trans = "sqrt")\n
Run Code Online (Sandbox Code Playgroud)\n

此示例显示每个国家/地区的人口。在此示例中,我们使用 \xe2\x80\x9cviridis\xe2\x80\x9d 色盲友好调色板作为颜色渐变(对于等离子变体,选项 =“plasma”),使用总体的平方根(即存储在世界对象的变量POP_EST中)

\n

在此输入图像描述

\n

您可以在这里了解更多信息:

\n

https://r-spatial.org/r/2018/10/25/ggplot2-sf.html

\n

https://datavizpyr.com/how-to-make-world-map-with-ggplot2-in-r/

\n

https://slcladal.github.io/maps.html

\n