📜  如何在 R 中轻松创建州和县地图

📅  最后修改于: 2022-05-13 01:54:40.862000             🧑  作者: Mango

如何在 R 中轻松创建州和县地图

在本文中,我们将讨论如何在 R 编程语言中创建州和县地图,以及如何绘制具有不同颜色强度和不同用例的此类地图。

与使用其他传统的可视化方法相比,2D 版本的县和州地图更简单、更容易可视化。如果我们想了解哪个州的人口数量最多或哪个州的年度预算最少,那么对于此类问题陈述,地图是最简单的可视化方法。

在这里,我们将使用 tidyverse 包来利用地图数据集和 ggplot 包来绘制地图。

安装

要安装和加载 tidyverse,请在终端中输入以下命令。

逐步实施

第 1 步:加载内置地图数据

使用 map_data( )函数,我们可以加载 tidyverse 包中内置的地图数据集。

例子 :

在此示例中,我们将从 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( )函数用于避免地图上的图例。

例子 :

在这里,我们正在编写一个使用内置地图数据绘制地图的函数

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()函数将坐标添加到上面的地图。添加它是为了给地图一个地球效果。我们可以进一步可视化美国境内每个州的每个子区域。

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)

输出