如何在 R 中轻松创建州和县地图
在本文中,我们将讨论如何在 R 编程语言中创建州和县地图,以及如何绘制具有不同颜色强度和不同用例的此类地图。
与使用其他传统的可视化方法相比,2D 版本的县和州地图更简单、更容易可视化。如果我们想了解哪个州的人口数量最多或哪个州的年度预算最少,那么对于此类问题陈述,地图是最简单的可视化方法。
在这里,我们将使用 tidyverse 包来利用地图数据集和 ggplot 包来绘制地图。
安装
要安装和加载 tidyverse,请在终端中输入以下命令。
Install the Package – install.packages(“tidyverse”)
Load the Package – library(“tidyverse”)
逐步实施
第 1 步:加载内置地图数据
使用 map_data( )函数,我们可以加载 tidyverse 包中内置的地图数据集。
Syntax: map_data(map, region = “.”, exact = FALSE, …)
Parameters:
- map – name of map provided by the maps package
- region – name of subregions to include
- exact – region as regular expression (FALSE) or as a fixed string (TRUE)
例子 :
在此示例中,我们将从 state、county USArrests、USA、world 和 world2 数据集中加载数据。
R
# load the package
library("tidyverse")
# Loading map data
states < - map_data("state")
counties < - map_data("county")
arrests < - USArrests
usa < -map_data("usa")
world < -map_data("world")
world2 < -map_data("world2")
R
# Function to plot maps using in-built map data
map <- function(x,y,dataset,fill_column){
p <- ggplot(data = dataset,
mapping = aes(x = x, y = y, group = group, fill = fill_column))
p + geom_polygon() + guides(fill = FALSE)
}
R
library(tidyverse)
# Loading map data
states <- map_data("state")
counties <- map_data("county")
arrests <- USArrests
usa <-map_data("usa")
world <-map_data("world")
world2<-map_data("world2")
# Function to plot maps using in-built map data
map <- function(x,y,dataset,fill_column){
p <- ggplot(data = dataset,
mapping = aes(x = x, y = y, group = group, fill = fill_column))
p + geom_polygon() + guides(fill = FALSE)
}
# entire USA on map
map(usa$long,usa$lat,usa,usa$region)
R
library(tidyverse)
# Loading map data
states <- map_data("state")
counties <- map_data("county")
arrests <- USArrests
usa <-map_data("usa")
world <-map_data("world")
world2<-map_data("world2")
# Function to plot maps using in-built map data
map <- function(x,y,dataset,fill_column){
p <- ggplot(data = dataset,
mapping = aes(x = x, y = y, group = group, fill = fill_column))
p + geom_polygon() + guides(fill = FALSE)
}
# plotting USA states
map(states$long,states$lat,states,states$region)
R
library(tidyverse)
# Loading map data
states <- map_data("state")
counties <- map_data("county")
arrests <- USArrests
usa <-map_data("usa")
world <-map_data("world")
world2<-map_data("world2")
# Function to plot maps using in-built map data
map <- function(x,y,dataset,fill_column){
p <- ggplot(data = dataset,
mapping = aes(x = x, y = y, group = group, fill = fill_column))
p + geom_polygon() + guides(fill = FALSE)
}
# US counties by subregion with latitude and longitude
map(counties$long,counties$lat,counties,counties$subregion) +
coord_map("albers", lat0 = 45.5, lat1 = 29.5)
R
library(tidyverse)
# Loading map data
states <- map_data("state")
counties <- map_data("county")
arrests <- USArrests
usa <-map_data("usa")
world <-map_data("world")
world2<-map_data("world2")
# Function to plot maps using in-built map data
map <- function(x,y,dataset,fill_column){
p <- ggplot(data = dataset,
mapping = aes(x = x, y = y, group = group, fill = fill_column))
p + geom_polygon() + guides(fill = FALSE)
}
# World Map using world dataset
map(world$long,world$lat,world,world$region)
R
library(tidyverse)
# Loading map data
states <- map_data("state")
counties <- map_data("county")
arrests <- USArrests
usa <-map_data("usa")
world <-map_data("world")
world2<-map_data("world2")
# Function to plot maps using in-built map data
map <- function(x,y,dataset,fill_column){
p <- ggplot(data = dataset,
mapping = aes(x = x, y = y, group = group, fill = fill_column))
p + geom_polygon() + guides(fill = FALSE)
}
# World Map using world2 dataset
map(world2$long,world2$lat,world2,world2$region)
第 2 步:绘制地图数据
在这里,我们将在 R 中编写一个用户定义的函数来使用上面加载的数据集绘制地图。我们将用于填充地图的数据集、x、y 和列作为函数的参数。使用 ggplot()函数绘制地图。 guides( )函数用于避免地图上的图例。
Syntax: ggplot(data = NULL, mapping = aes(), …)
Parameters:
- data – dataset
- mapping – aesthetic mappings to use for plot
例子 :
在这里,我们正在编写一个使用内置地图数据绘制地图的函数
R
# Function to plot maps using in-built map data
map <- function(x,y,dataset,fill_column){
p <- ggplot(data = dataset,
mapping = aes(x = x, y = y, group = group, fill = fill_column))
p + geom_polygon() + guides(fill = FALSE)
}
示例:在地图上按地区绘制美国
使用之前创建的 map( )函数,让我们绘制一张美国地图。使用 usa 数据集和上面创建的用户定义函数,让我们通过绘图进行可视化。我们还将经度、纬度、美国数据集和美国地区列作为参数传递给 map()函数。
R
library(tidyverse)
# Loading map data
states <- map_data("state")
counties <- map_data("county")
arrests <- USArrests
usa <-map_data("usa")
world <-map_data("world")
world2<-map_data("world2")
# Function to plot maps using in-built map data
map <- function(x,y,dataset,fill_column){
p <- ggplot(data = dataset,
mapping = aes(x = x, y = y, group = group, fill = fill_column))
p + geom_polygon() + guides(fill = FALSE)
}
# entire USA on map
map(usa$long,usa$lat,usa,usa$region)
输出:
示例:在地图上按地区绘制美国各州
在这里,我们将按州填充美国地图,可以用不同的颜色进行可视化。在州数据集中,使用“区域”列,我们可以在美国地图中可视化所有这些。我们还将经度、纬度、州数据集和州中的区域列作为参数传递给 map()函数。
R
library(tidyverse)
# Loading map data
states <- map_data("state")
counties <- map_data("county")
arrests <- USArrests
usa <-map_data("usa")
world <-map_data("world")
world2<-map_data("world2")
# Function to plot maps using in-built map data
map <- function(x,y,dataset,fill_column){
p <- ggplot(data = dataset,
mapping = aes(x = x, y = y, group = group, fill = fill_column))
p + geom_polygon() + guides(fill = FALSE)
}
# plotting USA states
map(states$long,states$lat,states,states$region)
输出:
示例:按纬度和经度按次区域绘制美国县
让我们看看如何使用 coord_map()函数将坐标添加到上面的地图。添加它是为了给地图一个地球效果。我们可以进一步可视化美国境内每个州的每个子区域。
Syntax: coord_map(projection = “mercator”, orientation = NULL,xlim = NULL,ylim = NULL …)
Parameters:
- projection – projection to use
- orientation – projection orientation
- xlim – x limits (in degrees of longitude/latitude)
- ylim – y limits (in degrees of longitude/latitude)
R
library(tidyverse)
# Loading map data
states <- map_data("state")
counties <- map_data("county")
arrests <- USArrests
usa <-map_data("usa")
world <-map_data("world")
world2<-map_data("world2")
# Function to plot maps using in-built map data
map <- function(x,y,dataset,fill_column){
p <- ggplot(data = dataset,
mapping = aes(x = x, y = y, group = group, fill = fill_column))
p + geom_polygon() + guides(fill = FALSE)
}
# US counties by subregion with latitude and longitude
map(counties$long,counties$lat,counties,counties$subregion) +
coord_map("albers", lat0 = 45.5, lat1 = 29.5)
输出:
示例:绘制世界地图
下面让我们看看如何使用 map()函数和世界数据集绘制世界地图。使用上面定义的世界数据集和用户定义的函数,将世界中的经度、纬度、世界数据集和区域列作为参数传递给 map()函数。
R
library(tidyverse)
# Loading map data
states <- map_data("state")
counties <- map_data("county")
arrests <- USArrests
usa <-map_data("usa")
world <-map_data("world")
world2<-map_data("world2")
# Function to plot maps using in-built map data
map <- function(x,y,dataset,fill_column){
p <- ggplot(data = dataset,
mapping = aes(x = x, y = y, group = group, fill = fill_column))
p + geom_polygon() + guides(fill = FALSE)
}
# World Map using world dataset
map(world$long,world$lat,world,world$region)
输出:
示例:World2 数据集,具有纬度变化
这是另一个使用 world2 数据集的世界地图,具有纬度变化。使用 map()函数和 world2 数据集,将 world2 中的经度、纬度、world2 数据集和区域列作为参数传递给 map()函数。
R
library(tidyverse)
# Loading map data
states <- map_data("state")
counties <- map_data("county")
arrests <- USArrests
usa <-map_data("usa")
world <-map_data("world")
world2<-map_data("world2")
# Function to plot maps using in-built map data
map <- function(x,y,dataset,fill_column){
p <- ggplot(data = dataset,
mapping = aes(x = x, y = y, group = group, fill = fill_column))
p + geom_polygon() + guides(fill = FALSE)
}
# World Map using world2 dataset
map(world2$long,world2$lat,world2,world2$region)
输出: