将城市添加到地图 (ggplot2)

Add cities to a map (ggplot2)

我在 ggplot 上苦苦挣扎了好几天。我想用不同颜色的不同区域制作一张地图,并在上面添加城市名称。我设法使用以下代码绘制地图,其中的区域以不同的方式着色:

#require
library(plyr)
library(dplyr)
library(rgdal)
library(ggplot2)
library(ggmap)

#open data
data = read.table("region.txt", header=T, sep="\t", quote="", dec=".")
#open shapefile
mapa <-  readOGR(dsn=".",layer="DEPARTEMENT")

#merge dataframe/shapefile
mapa@data$id <- rownames(mapa@data)
mapa@data   <- join(mapa@data, data, by="ID_GEOFLA")
mapa.df     <- fortify(mapa)
mapa.df     <- join(mapa.df,mapa@data, by="id")
plotData <- join(mapa.df, data)

#plot
mapfr <- ggplot(plotData) + 
aes(long,lat,group=group,fill=area) + 
geom_polygon() +
geom_path(color="NA") +
coord_fixed() +
theme_nothing(legend = TRUE)

然后我打开包含我想在创建的地图上绘制的城市的名称和 long/lat 的数据集:

#opendata
points = read.table("cities.txt", header=T, sep="\t", quote="", dec=".") 
#add points on the map    
mapfr + 
geom_point(data = points, aes(x = long, y = lat), color = "black", size = 1)

但是我的点完全不在地图上。尽管如此,坐标是正确的。知道我应该改变什么才能正确绘制我的点吗?我知道有一种方法可以使用 "maps" 包,但我想使用 ggplot。

我的数据集可用 here

以防万一有人遇到同样的问题。无需使用其他格式的坐标寻找另一个 shapefile,可以使用 rgdal package 中的 spTransform 命令转换实际坐标 - 在导入 shapefile [= 后立即在代码中添加此行12=] 坐标将在 long/lat

中给出