将城市添加到地图 (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
中给出
我在 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