4

我想在我的绘图中添加一个底图,它可以可视化三个 SpatialPointDataFrame。我已经尝试过 maptools 和 RgoogleMaps 包,但两者都不能以我想要的方式工作。
我的问题:SpatialPointDataFrames 没有绘制在 GoogleMaps 背景地图上。

一个最小的例子:

city.csv 具有以下示例内容:

FID,city,POINT_X,POINT_Y
0,New York,-73.996786,40.720813
1,Newark,-74.172237, 40.732196

R代码:

# Load packages
library(RgoogleMaps)
library(sp)

# load .csv file 
city= read.csv("city.csv", header = TRUE)

# convert to SpatialPointDataFrame
coordinates(city) <- c("POINT_X", "POINT_Y")
proj4string(city) <- CRS("+proj=longlat +datum=WGS84")

# use RgoogleMaps
gc <- geocode('new york, usa')
center <- as.numeric(gc)
ggmap(get_googlemap(center = center, color = 'bw', scale = 4), fullpage = T)
# Plot the city dataset
plot(city, pch = 22, col="black", bg= "yellow", cex = 1.5, add = TRUE)

结果应该是带有背景地图和两个点的绘图,但这些点并未绘制在地图上。有地理编码问题还是我错过了什么?是否可以结合 ggmap 和 plt 功能?

任何帮助深表感谢!

4

3 回答 3

4

使用 ggplot2 进行此类工作要容易得多,您可以将点、多边形、2 密度等添加到 ggmap 图层。

library(RgoogleMaps)
library(sp)
library(ggplot2)
library(ggmap)

P是 SpatialPointsDataFrame 对象:

DB <- data.frame(FID=P$FID, city=P$city)
DB <- cbind(DB, P@coords)


DB <- data.frame(FID=c(0,1), city=c("New York", "Newark"),   POINT_X=c(-73.996786,-74.172237), POINT_Y=c(40.720813,40.732196 ))
gc <- geocode("new york, usa")
center <- as.numeric(gc)
G <- ggmap(get_googlemap(center = center, color = 'bw', scale = 4), extent = "device")
G1 <- G + geom_point(aes(x=POINT_X, y=POINT_Y ),data=DB, color="red", size=5)
plot(G1)

这是输出:

在此处输入图像描述

于 2014-02-28T23:23:49.930 回答
1

这是两个不同的框架(网格和基础图形)。虽然,两者的结合可能是可能的,但我建议坚持使用 ggplot。

您可以使用 轻松添加分数,例如,请参见此处geom_point()的答案。

于 2014-02-28T23:20:17.883 回答
0

最近,除了ggplot2,还有像leafletmapview这样的包可以处理这个问题。对于 R 的 Leaflet,请参阅:

于 2018-09-07T14:21:03.810 回答