R mapdata与ggplot坐标?

时间:2017-04-14 18:34:04

标签: r ggplot2

我正在尝试将地图和mapdata包与ggplot一起使用,但我似乎无法从数据中提取坐标。具体来说,我试图描绘美国某些州和加拿大的省份。

library(maps)
library(mapdata)
library(ggplot2)
library(ggthemes)
library(raster)
us <- getData("GADM", country = "USA", level = 1)
canada <- getData("GADM", country = "CAN", level = 1)
states <- c('connecticut', 'new york', 'new jersey', 'massachusetts')
provinces <- c('Ontario', 'Alberta', 'Quebec')

us.states <- us[us$NAME_1 %in% states, ]
ca.provinces <- canada[canada$NAME_1 %in% provinces, ]

ggplot(us.states, aes(x = longitude, y = latitude, group = group)) +
  geom_path()+
  geom_path(data = ca.provinces)+
  coord_map()

我收到错误:

Regions defined for each Polygons
Regions defined for each Polygons
Error in .Call.graphics(C_palette2, .Call(C_palette2, NULL)) : 
  invalid graphics state

这里有什么帮助吗?我不熟悉R中的映射。

1 个答案:

答案 0 :(得分:1)

代码几乎是好的。我只做了一些小改动。 1.州名和省名需要在空间多边形数据框中完全匹配。因此,州名的第一个字母必须是大写的。而“魁北克”需要成为“魁北克”。 2.分别将longitudelatitude更改为longlat

us <- getData("GADM", country = "USA", level = 1)
canada <- getData("GADM", country = "CAN", level = 1)
states <- c('Connecticut', 'New York', 'New Jersey', 'Massachusetts')
provinces <- c('Ontario', 'Alberta', 'Québec')

us.states <- us[us$NAME_1 %in% states, ]
ca.provinces <- canada[canada$NAME_1 %in% provinces, ]

ggplot(us.states, aes(x = long, y = lat, group = group)) +
  geom_path()+
  geom_path(data = ca.provinces)+
  coord_map()