如何使用 R 绘制世界地图
How to plot a world map using R
我正在做一个项目,其中一小部分是绘制一张世界地图,其中包含我列表中的 135 个国家/地区。我还有一个列表,上面写着是否开发。
如何在世界地图中用不同颜色表示发展状态?
我的数据看起来像这样
Country Code Developed
Brazil BRA 1
Singapore SIN 3
France FRA 1
Poland POL 2
我从另一个问题中截取了下图,但理想情况下,它看起来像这样,但有更多的国家和 3 种不同的颜色。
谢谢
首先你需要安装软件包:
install.packages(c("cowplot", "googleway", "ggplot2", "ggrepel",
"ggspatial", "libwgeom", "sf", "rnaturalearth", "rnaturalearthdata")
之后我们将加载所有地图所需的基本包,即 ggplot2 和 sf。我们还建议为 ggplot2 (theme_bw) 使用经典的 dark-on-light 主题,这适用于地图:
library("ggplot2")
theme_set(theme_bw())
library("sf")
library("rnaturalearth")
library("rnaturalearthdata")
world <- ne_countries(scale = "medium", returnclass = "sf")
class(world)
## [1] "sf"
## [1] "data.frame"
之后我们可以:
ggplot(data = world) +
geom_sf()
结果会是这样的:
在它之后,我们可以添加:
ggplot(data = world) +
geom_sf() +
xlab("Longitude") + ylab("Latitude") +
ggtitle("World map", subtitle = paste0("(", length(unique(world$NAME)), " countries)"))
图表显示如下:
最后,如果我们想要一些颜色,我们需要这样做:
ggplot(data = world) +
geom_sf(aes(fill = pop_est)) +
scale_fill_viridis_c(option = "plasma", trans = "sqrt")
这个例子显示了每个国家的人口。在这个例子中,我们使用“viridis”色盲友好调色板进行颜色渐变(plasma 变体的选项 =“plasma”),使用人口的平方根(存储在变量 POP_EST世界对象)
您可以在此处了解更多信息:
https://r-spatial.org/r/2018/10/25/ggplot2-sf.html
https://datavizpyr.com/how-to-make-world-map-with-ggplot2-in-r/
如果你想用你自己的数据给它上色,
您将必须相应地修改 world
数据框:
library(rnaturalearth)
library(rnaturalearthdata)
library(ggplot2)
library(tidyverse)
world <- ne_countries(scale = "medium", returnclass = "sf")
my_countries <- c("Aruba","Afghanistan", "Morocco", "Canada")
world_modified <- world %>%
mutate(my_selection = ifelse(admin %in% my_countries,
1, NA))
ggplot(data = world_modified) +
geom_sf(aes(fill=my_selection)) +
theme_bw()
由 reprex package (v2.0.0)
于 2021-10-19 创建
我正在做一个项目,其中一小部分是绘制一张世界地图,其中包含我列表中的 135 个国家/地区。我还有一个列表,上面写着是否开发。
如何在世界地图中用不同颜色表示发展状态?
我的数据看起来像这样
Country Code Developed
Brazil BRA 1
Singapore SIN 3
France FRA 1
Poland POL 2
我从另一个问题中截取了下图,但理想情况下,它看起来像这样,但有更多的国家和 3 种不同的颜色。
谢谢
首先你需要安装软件包:
install.packages(c("cowplot", "googleway", "ggplot2", "ggrepel",
"ggspatial", "libwgeom", "sf", "rnaturalearth", "rnaturalearthdata")
之后我们将加载所有地图所需的基本包,即 ggplot2 和 sf。我们还建议为 ggplot2 (theme_bw) 使用经典的 dark-on-light 主题,这适用于地图:
library("ggplot2")
theme_set(theme_bw())
library("sf")
library("rnaturalearth")
library("rnaturalearthdata")
world <- ne_countries(scale = "medium", returnclass = "sf")
class(world)
## [1] "sf"
## [1] "data.frame"
之后我们可以:
ggplot(data = world) +
geom_sf()
结果会是这样的:
在它之后,我们可以添加:
ggplot(data = world) +
geom_sf() +
xlab("Longitude") + ylab("Latitude") +
ggtitle("World map", subtitle = paste0("(", length(unique(world$NAME)), " countries)"))
图表显示如下:
最后,如果我们想要一些颜色,我们需要这样做:
ggplot(data = world) +
geom_sf(aes(fill = pop_est)) +
scale_fill_viridis_c(option = "plasma", trans = "sqrt")
这个例子显示了每个国家的人口。在这个例子中,我们使用“viridis”色盲友好调色板进行颜色渐变(plasma 变体的选项 =“plasma”),使用人口的平方根(存储在变量 POP_EST世界对象)
您可以在此处了解更多信息:
https://r-spatial.org/r/2018/10/25/ggplot2-sf.html
https://datavizpyr.com/how-to-make-world-map-with-ggplot2-in-r/
如果你想用你自己的数据给它上色,
您将必须相应地修改 world
数据框:
library(rnaturalearth)
library(rnaturalearthdata)
library(ggplot2)
library(tidyverse)
world <- ne_countries(scale = "medium", returnclass = "sf")
my_countries <- c("Aruba","Afghanistan", "Morocco", "Canada")
world_modified <- world %>%
mutate(my_selection = ifelse(admin %in% my_countries,
1, NA))
ggplot(data = world_modified) +
geom_sf(aes(fill=my_selection)) +
theme_bw()
由 reprex package (v2.0.0)
于 2021-10-19 创建