在 R 中用 ggmap 绘制多边形
Plot polygon with ggmap in R
我想在地图上绘制多边形。为此,我目前使用 ggmap,但它不允许我这样做,总是给我一条错误消息:
Fehler: ggplot2 none-numeric argument for binary Operator
我的代码如下所示:
> library(rgdal)
> library(geojsonio)
> library(sp)
> library(maps)
> library(ggmap)
> library(maptools)
> data_file <- "/home/jan/Downloads/map.geojson"
> data_json <- geojson_read(data_file, what = "sp")
> plot(data_json, usePolypath = FALSE)
> mapImage <- ggmap(get_googlemap(c(lon = -118.243683, lat = 34.052235), scale = 1,
+ zoom = 7), extent = "normal")
Map from URL : http://maps.googleapis.com/maps/api/staticmap?center=34.052235,-118.243683&zoom=7&size=640x640&scale=1&maptype=terrain&sensor=false
> dat <- as.data.frame(data_json)
> names(data)[1:2] <- c("lon","lat")
> print(mapImage)+
+ geom_polygon(data = dat, aes(lon, lat), colour="red", fill="red")
Fehler in print(mapImage) + geom_polygon(data = dat, aes(lon, lat), colour = "red", :
nicht-numerisches Argument für binären Operator
但如果我这样做
> dat2 <- as.numeric(dat)
> print(mapImage)+
+ geom_polygon(data = dat2, aes(lon, lat), colour="red", fill="red")
Fehler: ggplot2 doesn't know how to deal with data of class numeric
我收到错误
ggplot2 doesn't know how to deal with data of class numeric
PS。我是 R 和编程的新手
谢谢
这个:
data_json <- geojson_read(data_file, what = "sp")
returns 一个 sp
class 对象,ggplot
和 geom_polygon
无法处理。
修复方法是在其上添加 运行 fortify
以制作 geom_polygon
可以使用的数据框。您没有向我们提供您的数据文件,因此我们无法为您提供确切的代码,但是:
data_file <- system.file("examples", "california.geojson", package = "geojsonio")
data_json <- geojson_read(data_file, what = "sp")
fd = fortify(data_json)
mapImage + geom_polygon(data=fd, aes(x=long,y=lat))
应该会给你足够的线索。
我想在地图上绘制多边形。为此,我目前使用 ggmap,但它不允许我这样做,总是给我一条错误消息:
Fehler: ggplot2 none-numeric argument for binary Operator
我的代码如下所示:
> library(rgdal)
> library(geojsonio)
> library(sp)
> library(maps)
> library(ggmap)
> library(maptools)
> data_file <- "/home/jan/Downloads/map.geojson"
> data_json <- geojson_read(data_file, what = "sp")
> plot(data_json, usePolypath = FALSE)
> mapImage <- ggmap(get_googlemap(c(lon = -118.243683, lat = 34.052235), scale = 1,
+ zoom = 7), extent = "normal")
Map from URL : http://maps.googleapis.com/maps/api/staticmap?center=34.052235,-118.243683&zoom=7&size=640x640&scale=1&maptype=terrain&sensor=false
> dat <- as.data.frame(data_json)
> names(data)[1:2] <- c("lon","lat")
> print(mapImage)+
+ geom_polygon(data = dat, aes(lon, lat), colour="red", fill="red")
Fehler in print(mapImage) + geom_polygon(data = dat, aes(lon, lat), colour = "red", :
nicht-numerisches Argument für binären Operator
但如果我这样做
> dat2 <- as.numeric(dat)
> print(mapImage)+
+ geom_polygon(data = dat2, aes(lon, lat), colour="red", fill="red")
Fehler: ggplot2 doesn't know how to deal with data of class numeric
我收到错误
ggplot2 doesn't know how to deal with data of class numeric
PS。我是 R 和编程的新手
谢谢
这个:
data_json <- geojson_read(data_file, what = "sp")
returns 一个 sp
class 对象,ggplot
和 geom_polygon
无法处理。
修复方法是在其上添加 运行 fortify
以制作 geom_polygon
可以使用的数据框。您没有向我们提供您的数据文件,因此我们无法为您提供确切的代码,但是:
data_file <- system.file("examples", "california.geojson", package = "geojsonio")
data_json <- geojson_read(data_file, what = "sp")
fd = fortify(data_json)
mapImage + geom_polygon(data=fd, aes(x=long,y=lat))
应该会给你足够的线索。