具有ggmap和ggplot2的国家的行政区域地图

问题描述 投票:18回答:2

我可以使用以下代码制作美国各州的失业率图表。

library(XML)
library(ggplot2)
library(plyr)
library(maps)

unemp <-
  readHTMLTable('http://www.bls.gov/web/laus/laumstrk.htm',
    colClasses = c('character', 'character', 'numeric'))[[2]]

names(unemp) <- c('rank', 'region', 'rate')
unemp$region <- tolower(unemp$region)

us_state_map <- map_data('state')
map_data <- merge(unemp, us_state_map, by = 'region')

map_data <- arrange(map_data, order)

states <- data.frame(state.center, state.abb)

p1 <- ggplot(data = map_data, aes(x = long, y = lat, group = group))
p1 <- p1 + geom_polygon(aes(fill = cut_number(rate, 5)))
p1 <- p1 + geom_path(colour = 'gray', linestyle = 2)
p1 <- p1 + scale_fill_brewer('Unemployment Rate (Jan 2011)', palette  = 'PuRd')
p1 <- p1 + coord_map()
p1 <- p1 + geom_text(data = states, aes(x = x, y = y, label = state.abb, group = NULL), size = 2)
p1 <- p1 + theme_bw()
p1

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS8zanlOUi5wbmcifQ==” alt =“在此处输入图像说明”>“ >>

现在我想为巴基斯坦使用类似的图表。我的几次尝试结果如下:

data(world.cities)
Pakistan <- data.frame(map("world", "Pakistan", plot=FALSE)[c("x","y")])

p <- ggplot(Pakistan, aes(x=x, y=y)) +
     geom_path(colour = 'green', linestyle = 2) +
     coord_map() + theme_bw()
p <- p + labs(x=" ", y=" ")
p <- p + theme(panel.grid.minor=element_blank(), panel.grid.major=element_blank())
p <- p + theme(axis.ticks = element_blank(), axis.text.x = element_blank(), axis.text.y = element_blank())
p <- p + theme(panel.border = element_blank())
print(p)

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9UMUdhRS5wbmcifQ==” alt =“在此处输入图像描述”>

library(mapproj)

Country <- "Pakistan"

Get_Map_Country <-
  get_map(
      location = Country
    , zoom = 5
    , scale = "auto"
    , maptype = "roadmap"
    , messaging = FALSE
    , urlonly = FALSE
    , filename = "ggmapTemp"
    , crop = TRUE
    , color = "color"
    , source = "google"
    , api_key
    )

Country1 <-
  ggmap(
      ggmap = Get_Map_Country
    , extent = "panel"
  #  , base_layer
    , maprange = FALSE
    , legend = "right"
    , padding = 0.02
    , darken = c(0, "black")
    )

Country1 <- Country1 + labs(x="Longitude", y="Latitude")
print(Country1)

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9nU0gwaS5qcGcifQ==” alt =“在此处输入图像描述”>

Country2 <- Country1 + geom_polygon(data = Pakistan
                    , aes(x=x, y=y)
                    , color = 'white', alpha = .75, size = .2)

print(Country2)

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS8yMHczaC5qcGcifQ==” alt =“在此处输入图像描述”>

问题

我想知道如何获取美国的巴基斯坦行政区域地图。我知道,为此,我们需要行政边界的经度和纬度。我想知道如何获得一个国家的行政边界的经度和纬度。我尝试了Global Administrative Areas,但没有成功。

我可以使用以下代码制作美国各州的失业率图表。库(XML)库(ggplot2)库(plyr)库(地图)unemp

r ggplot2 ggmap
2个回答
47
投票

我不知道您需要的行政区域的空间级别,但这有两种方法从Global Administrative Areas (gadm.org)读取shapefile数据和.RData格式,并将它们转换为数据框以供ggplot2使用。另外,为了复制美国地图,您需要绘制位于多边形质心的管理区域名称。


3
投票

您是否尝试过http://www.diva-gis.org/gdata?这应该为您提供带有巴基斯坦州/县边界的Shapefile。

maptools包具有的功能可让您读取Shapefile并将其转换为可用于布置边界多边形的数据框。

© www.soinside.com 2019 - 2024. All rights reserved.