标签: ggmap

叠加了geom_map的ggmap

library(sp)
library(spdep)
library(ggplot2)
library(ggmap)
library(rgdal)
Run Code Online (Sandbox Code Playgroud)

获取并摆弄数据:

nc.sids <- readShapePoly(system.file("etc/shapes/sids.shp", package="spdep")[1],ID="FIPSNO", proj4string=CRS("+proj=longlat +ellps=clrk66"))
nc.sids=spTransform(nc.sids,CRS("+init=epsg:4326"))
Run Code Online (Sandbox Code Playgroud)

从stamen.com获取背景地图,情节,看起来不错:

ncmap = get_map(location=as.vector(bbox(nc.sids)),source="stamen",maptype="toner",zoom=7)
ggmap(ncmap)
Run Code Online (Sandbox Code Playgroud)

在地图上创建一个包含长,纬度,Z和绘图的数据框和一个空白图:

ncP = data.frame(coordinates(nc.sids),runif(nrow(nc.sids)))
colnames(ncP)=c("long","lat","Z")

ggmap(ncmap)+geom_point(aes(x=long,y=lat,col=Z),data=ncP)
ggplot()+geom_point(aes(x=long,y=lat,col=Z),data=ncP)
Run Code Online (Sandbox Code Playgroud)

给它一些叫做'id'和强化的独特的id(用维生素和铁?)

nc.sids@data[,1]=1:nrow(nc.sids)
names(nc.sids)[1]="id"
ncFort = fortify(nc.sids)
Run Code Online (Sandbox Code Playgroud)

现在,我的地图和我的极限,我想绘制74出生率:

myMap = geom_map(aes(fill=BIR74,map_id=id),map=ncFort,data=nc.sids@data)
Limits = expand_limits(x=ncFort$long,y=ncFort$lat)
Run Code Online (Sandbox Code Playgroud)

在一个空白的情节我可以:

ggplot() + myMap + Limits
Run Code Online (Sandbox Code Playgroud)

但在ggmap上我不能:

ggmap(ncmap) + myMap + Limits
# Error in eval(expr, envir, enclos) : object 'lon' not found
Run Code Online (Sandbox Code Playgroud)

一些版本:

> packageDescription("ggplot2")$Version
[1] "0.9.0"
> packageDescription("ggmap")$Version
[1] "2.0"
Run Code Online (Sandbox Code Playgroud)

我可以将geom_polygon添加到ggplot或ggmap,它可以按预期工作.所以geom_map就好了....

r map ggplot2 ggmap

10
推荐指数
1
解决办法
5723
查看次数

R中的反向地理编码循环

我试图反转地理编码一个大型数据集(大约100k).我使用revgeocode了包中的功能ggmap.我得到了一个条目的结果

48 Grand View Terrace, San Francisco, 
CA 94114, USA            
48 Grand View Terrace Eureka Valley San Francisco        
San Francisco County                  California United States
postal_code postal_code_suffix
Run Code Online (Sandbox Code Playgroud)

,但我需要自动化该过程并将其用于整个数据集.

我试过了

r <- lapply(revgeocode(location = (c(z$lon),c(z$lat)),
             output = "more",
            messaging = FALSE, sensor = FALSE, override_limit = FALSE,
            client = "", signature = ""))
Run Code Online (Sandbox Code Playgroud)

并在每一步中得到意外','的错误.

我也尝试编写以下循环

r <- for(i in 1:10){
  revgeocode(location = ("z$lon", "z$lat"),output = "more", messaging =      FALSE, sensor = FALSE, override_limit = FALSE,client = "", signature …
Run Code Online (Sandbox Code Playgroud)

r reverse-geocoding ggmap

10
推荐指数
1
解决办法
5496
查看次数

ggmap不显示地图

我有以下代码:

library(ggmap) 
ggmap(get_map(location=c(lon = 5.218922, lat = 52.342366), zoom =14))
Run Code Online (Sandbox Code Playgroud)

哪个由我的帐户应该工作正常,但我只得到一个标准的ggplot2图像(灰色背景等),正确的轴,但没有显示地图: 在此输入图像描述

当我查看我的工作目录时,我找到一个名为"ggmapTemp"的文件,其中包含正确的地图.但是ggplot2没有显示地图.

我与RStudio合作,对我的工作电脑拥有有限的权利.这可能是地图显示不正确的原因吗?我的RStudio版本是0.96.316,R是R-2.15.1.

> sessionInfo()
 R version 2.15.1 (2012-06-22)
 Platform: x86_64-pc-mingw32/x64 (64-bit)

 locale:
 [1] LC_COLLATE=Dutch_Netherlands.1252  LC_CTYPE=Dutch_Netherlands.1252   
 [3] LC_MONETARY=Dutch_Netherlands.1252 LC_NUMERIC=C                      
 [5] LC_TIME=Dutch_Netherlands.1252    

 attached base packages:
 [1] stats     graphics  grDevices utils     datasets  methods   base     

 other attached packages:
 [1] ggmap_2.1     ggplot2_0.9.1

 loaded via a namespace (and not attached):
 [1] colorspace_1.1-1   dichromat_1.2-4    digest_0.5.2       grid_2.15.1       
 [5] labeling_0.1       MASS_7.3-18        memoise_0.1        munsell_0.3       
 [9] plyr_1.7.1         png_0.1-4          proto_0.3-9.2      RColorBrewer_1.0-5
 [13] reshape2_1.2.1     RgoogleMaps_1.2.0  rjson_0.2.9        scales_0.2.1      
 [17] stringr_0.6        tools_2.15.1   
Run Code Online (Sandbox Code Playgroud)

更新: 我的sessionInfo()回答1后: …

r ggplot2 ggmap

9
推荐指数
2
解决办法
6659
查看次数

将revgeocode应用于经度 - 纬度坐标列表

我试图通过使用ggmap库中的revgeodcode函数来获取经度纬度坐标(长)列表的Zip代码.

我的问题和数据与此处相同:在FOR循环中使用revgeocode函数.需要帮助,但接受的答案对我不起作用.

我的数据(.csv):

ID,      Longitude,      Latitude
311175,  41.298437,      -72.929179
292058,  41.936943,      -87.669838
12979,   37.580956,      -77.471439
Run Code Online (Sandbox Code Playgroud)

我按照相同的步骤:

data <- read.csv(file.choose())
dset <- as.data.frame(data[,2:3])
location = dset
locaddr <- lapply(seq(nrow(location)), function(i){
               revgeocode(location[i,],
               output = c("address"),
               messaging = FALSE,
               sensor = FALSE,
               override_limit = FALSE)
               })
Run Code Online (Sandbox Code Playgroud)

...并收到错误消息:"错误:is.numeric(位置)&&长度(位置)== 2不为TRUE"具体来说,is.numeric(位置)为FALSE,这看起来很奇怪,因为我可以乘以2并得到预期的答案.

任何帮助,将不胜感激.

google-maps loops r ggmap

9
推荐指数
1
解决办法
6765
查看次数

ggmap改变地图的大小

我想创建一个不完全正方形但是矩形的地图,这是我指定的大小.

require(ggmap)
tenmile <- get_map(location = c(lon = -122.486328, lat = 48.862813),
    color = "color",
    source = "google",
    maptype = "roadmap",
    zoom = 12)
tenmile.map <- ggmap(tenmile, 
    extent = "device",
    ylab = "Latitude",
    xlab = "Longitude")+ggtitle("GEOMean for Data from Oct 2013-Nov 2014")
tenmile.map + geom_point(data=pp, aes(x=lon, y=lat, size=geomean), color="red", alpha=0.5) +      
geom_text(data=pp, aes(x=lon, y=lat, label = site), size=3, vjust = 1.25, hjust = -0.1)
Run Code Online (Sandbox Code Playgroud)

我会发布我得到的和我想要的图片,但是我没有足够的声望点来发布图片.= - (

r ggmap

9
推荐指数
1
解决办法
6753
查看次数

将栅格添加到ggmap基本地图:在ggplot2中设置alpha(透明度)并将颜色填充到inset_raster()

我想在ggplot2中使用覆盖GoogleMaps基本地图的栅格绘制地图.因此,我用get_map()insert_raster()这样的:

library(ggplot2)
library(ggmap)

bm <- ggmap(get_map(location = "Bangkok", maptype = "hybrid"))

bm + inset_raster(as.raster(r), xmin = r@extent[1], xmax = r@extent[2],
                  ymin = r@extent[3], ymax = r@extent[4])
Run Code Online (Sandbox Code Playgroud)

是否有可能设置alpha和更改fill颜色?

结果如下: 在此输入图像描述

plot r geospatial ggplot2 ggmap

9
推荐指数
1
解决办法
7502
查看次数

在sf对象下绘制静态基本映射

我正在尝试在我的sf对象下面绘制一个静态基本地图(用于打印).当ggmap我使用时,我首先得到很多错误,然后我似乎无法弄清楚如何将基本地图链接到我的ggplot2对象geom_sf.

library(sf)
# devtools::install_github("tidyverse/ggplot2")
library(ggplot2)
library(ggmap) 

nc <- st_read(system.file("shape/nc.shp", package="sf"))
nc_map <- get_map(location = "North Carolina, NC", zoom = 7)

ggmap(nc_map)

nc_centers <- st_centroid(nc)

nc_centers %>%
  ggplot() +
  geom_sf(aes(color = SID79, size = BIR74),
          show.legend = "point") +
  coord_sf(datum = NA) +
  theme_minimal()
Run Code Online (Sandbox Code Playgroud)

我也更喜欢使用source = "osm"as样式,但总是会返回'400 Bad Request'.

基地图可能还有另一个好包吗?

gis r geospatial ggmap r-sf

9
推荐指数
3
解决办法
1853
查看次数

get_map没有传递API密钥(HTTP状态为'403 Forbidden')

我一直在R 中的get_map()函数(ggmap库)中遇到这个问题.

我的代码运行时无需source = "google"为几个月指定API密钥(for ).但是,代码在几周前停止了工作.我知道谷歌已经强制要求API密钥(或者他们可能在没有我用尽的api密钥的情况下允许一定数量的呼叫).

但是,即使在指定API密钥(从Google Cloud Platform获得)后,我的代码仍然以相同的方式运行.我甚至联系了谷歌云支持,但是他们说API密钥本身没有任何问题,他们可以在最后调用地图.

我怀疑该get_map()功能api_key在从谷歌调用地图时没有通过.任何指向解决方案的指针都将受到赞赏.

下面是可重现的代码(失败).

library(ggmap)

lat <- c(4,41)  # India lat boundaries
lon <- c(68,99) # India long boundaries
center = c(mean(lat), mean(lon))

map <- get_map(location = c(lon = mean(lon), 
                            lat = mean(lat)),
               api_key = <my api key>,
               zoom = 6,
               maptype = "terrain",
               source = "google",
               messaging = TRUE
)
Run Code Online (Sandbox Code Playgroud)

以下是R中的错误消息(注意API密钥未通过)

trying URL 'http://maps.googleapis.com/maps/api/staticmap?center=22.5,83.5&zoom=6&size=640x640&scale=2&maptype=terrain&language=en-EN&sensor=false'
Error in download.file(url, destfile = tmp, quiet = …
Run Code Online (Sandbox Code Playgroud)

google-maps r google-maps-api-3 ggmap

9
推荐指数
3
解决办法
1万
查看次数

在ggplot/ggmap中省略一些边框

我是R的新手,我正在玩一个项目来绘制2010年到2020年阿拉巴马州预计的人口增长情况.这是我的代码:

dat <- read.table("C:/Users/rasmus/Documents/countyinfo.txt", sep="\t", header=TRUE)

library(ggplot2)
library(maps)
library(ggmap)

mdat <- map_data('county')
str(mdat)
al1 = get_map(location = c(lon = -86.304474, lat = 32.362563), 
              zoom = 7, maptype = 'roadmap')
al1MAP = ggmap(al1) + 
         geom_point(data=dat,inherit.aes = FALSE, 
                    aes(y=Lat, x=Lon, map_id=County, size=Growth), col="red") + 
         borders("state", colour="red", alpha=0.8) + 
         borders("county", colour="blue", alpha=0.5)
al1MAP
Run Code Online (Sandbox Code Playgroud)

现在,我有两个问题.

1)国家边界似乎做了奇怪的事情.这是关闭县覆盖的屏幕截图:

在此输入图像描述

2)鉴于这只是关于阿拉巴马州,我想关闭国界以外的边界,但我不知道该怎么做.我的猜测是试验xlimylim,但我不知道如何限制它们到阿拉巴马边界多边形.

r ggplot2 ggmap

8
推荐指数
1
解决办法
2114
查看次数

如何使用ggplot绘制美国城市?

我可以把路易斯安那州的情节很好......

require(ggplot2)
require(ggmap)
require(maps)
LA <- map_data("state", region="louisiana")
ggplot(LA, aes(x=long, y=lat))+geom_polygon()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

现在,我有关于洛杉矶特定城市的销售电话数量的数据.如何为每个城市添加一个积分,以便对该地块进行销售电话?

salesCalls <- data.frame(State=rep("louisiana",5), 
                             City=c("Baton Rouge", "New Orleans", "Shreveport", "Lafayette", "Mandeville"),
                             Calls=c(10,5,8,13,2))
salesCalls
      State        City Calls
1 louisiana Baton Rouge    10
2 louisiana New Orleans     5
3 louisiana  Shreveport     8
4 louisiana   Lafayette    13
5 louisiana  Mandeville     2
Run Code Online (Sandbox Code Playgroud)

r ggplot2 ggmap

8
推荐指数
1
解决办法
8988
查看次数