如何在 R 中使用 ggplot2 制作世界地图?
在本文中,我们将讨论如何使用 R 编程语言创建世界地图并在其上绘制数据。
要使用它创建世界地图,我们将使用 R 语言的 ggplot2 包的 geom_map()函数。此函数返回一个 ggplot 对象,因此在其他 ggplot 图上工作的所有函数也将在 geom_map() 中工作。
Syntax:
ggplot() + geom_map( data, map, aes() )
where,
- data: determines the data be displayed in this layer.
- map: determines the data frame that contains the map coordinates
- aes(): determines the aesthetics that is coordinate system variable and other aesthetical aspects.
例子:
这是使用 geom_map()函数绘制的基本世界地图。使用 map_data()函数获取地图坐标的数据框。这将创建一个作为 ggplot 对象的世界地图,该对象可以像其他 ggplot2 绘图一样被格式化、修改和绘制为图层。
R
# load library tidyverse
library(tidyverse)
# create data for world coordinates using
# map_data() function
world_coordinates <- map_data("world")
# create world map using ggplot() function
ggplot() +
# geom_map() function takes world coordinates
# as input to plot world map
geom_map(
data = world_coordinates, map = world_coordinates,
aes(long, lat, map_id = region)
)
R
# load library tidyverse
library(tidyverse)
# create data for world coordinates using
# map_data() function
world_coordinates <- map_data("world")
# create world map using ggplot() function
ggplot() +
# geom_map() function takes world coordinates as input
# to plot world map color parameter determines the
# color of borders in map fill parameter determines
# the color of fill in map size determines the thickness
# of border in map
geom_map(
data = world_coordinates, map = world_coordinates,
aes(long, lat, map_id = region)
color = "white", fill = "darkgreen", size = 0.2
)
R
# load library tidyverse
library(tidyverse)
# create data for world coordinates using map_data() function
world_coordinates <- map_data("world")
# read volcano_eruption data from volcano.csv
volcano_eruption <- readr::read_csv("volcano.csv")
# create world map using ggplot() function
ggplot() +
# geom_map() funct
ion takes world coordinates as input
# to plot world map color parameter determines the
# color of borders in map fill parameter determines the
# color of fill in map size determines the thickness of
# border in map
geom_map(
data = world, map = world,
aes(long, lat, map_id = region),
color = "green", fill= "lightyellow"
)+
# geom_point function is used to plot scatter plot on top
# of world map
geom_point(
data = volcano_eruption,
aes(longitude, latitude, color = primary_volcano_type,
size=population_within_10_km),
alpha = 1
) +
# legend.position as none removes the legend
theme(legend.position="none")
输出:
这是一个带有 ggplot2 包图的默认配色方案的基本地图。
颜色定制
我们可以使用 geom_map()函数的颜色、填充和大小参数自定义绘图的视觉外观。
Syntax:
ggplot() + geom_map( data, map, aes(), size, color, fill )
where,
- size: determines the thickness of the border of the map
- color: determines the color of the border of the map
- fill: determines the color of the fill background of the map
例子:
这是一张使用 geom_map()函数的填充、颜色和大小属性制作的带有绿色填充和粗白边框的世界地图。这使得地图在视觉上更具吸引力,并帮助我们通过白色边界的对比来区分不同的国家。
R
# load library tidyverse
library(tidyverse)
# create data for world coordinates using
# map_data() function
world_coordinates <- map_data("world")
# create world map using ggplot() function
ggplot() +
# geom_map() function takes world coordinates as input
# to plot world map color parameter determines the
# color of borders in map fill parameter determines
# the color of fill in map size determines the thickness
# of border in map
geom_map(
data = world_coordinates, map = world_coordinates,
aes(long, lat, map_id = region)
color = "white", fill = "darkgreen", size = 0.2
)
输出:
在世界地图上绘制数据
由于 geom_map()函数返回 ggplot() 对象,我们可以像在任何其他 ggplot 图上一样在其上绘制数据。为此,我们只需要数据集中的纬度和经度数据即可在地图上绘制数据。我们可以使用所需的 ggplot2函数在世界地图图上绘制线图、散点图、箱线图或任何其他所需的图。
Syntax:
ggplot()+ geom_map()+ geom_plot()
where,
- geom_plot(): determines any plot function from ggplot2 package
例子:
在他的示例中,我们使用 geom_point()函数在 geom_map()函数之上绘制了一个火山喷发数据集。在这里,我们可以展示世界各地火山爆发强度的变化。这有助于我们了解火山爆发的临界区。
使用的数据集:火山
R
# load library tidyverse
library(tidyverse)
# create data for world coordinates using map_data() function
world_coordinates <- map_data("world")
# read volcano_eruption data from volcano.csv
volcano_eruption <- readr::read_csv("volcano.csv")
# create world map using ggplot() function
ggplot() +
# geom_map() funct
ion takes world coordinates as input
# to plot world map color parameter determines the
# color of borders in map fill parameter determines the
# color of fill in map size determines the thickness of
# border in map
geom_map(
data = world, map = world,
aes(long, lat, map_id = region),
color = "green", fill= "lightyellow"
)+
# geom_point function is used to plot scatter plot on top
# of world map
geom_point(
data = volcano_eruption,
aes(longitude, latitude, color = primary_volcano_type,
size=population_within_10_km),
alpha = 1
) +
# legend.position as none removes the legend
theme(legend.position="none")
输出: