标签: ggmap

ggmap :: get_map不允许我的地图角落的确切规格?

我正在使用R包ggmap.

?get_map 说:

location:地址,经度/纬度对(按此顺序),或左/下/右/顶部边界框

我的代码:

library(ggmap)
library(mapproj)

lat_bottom = 52.33  # bottom latitude of Berlin
lat_top    = 52.5   # top latitude of Berlin
lon_left   = 13.0   # left longitude of Berlin
lon_rigth  = 13.95  # right longitude of Berlin

mymap <- get_map(location = c(lon_left,lat_bottom,lon_rigth,lat_top),
source="google")
ggmap(mymap)
Run Code Online (Sandbox Code Playgroud)

为什么它会给我一个警告:

警告:给谷歌的边界框 - 空间范围只是近似值.将边界框转换为中心/缩放规范.(实验)

这是否意味着我无法创建具有这些精确角落的地图?

根据以下建议我尝试了这个:

lat_bottom = 52.33  # bottom latitude of Berlin
lat_top    = 52.68   # top latitude of Berlin
lon_left   = 13.08   # left longitude of Berlin
lon_rigth  = 13.77  # …
Run Code Online (Sandbox Code Playgroud)

r ggmap

12
推荐指数
1
解决办法
3829
查看次数

即使指定其他源,ggmap 中的 Google API 密钥也会出错

一段时间后我再次开始使用该包ggmap,现在当我尝试使用 function 获取地图时遇到问题get_map。无论我指定哪个来源,我总是收到错误

Error: Google now requires an API key.
   See ?register_google for details.
Run Code Online (Sandbox Code Playgroud)

虽然我不知道为什么这样的电话

get_map(location = "texas", zoom = 6, source = "stamen")
Run Code Online (Sandbox Code Playgroud)

需要对谷歌进行 API 调用。有没有人经历过类似的事情并且有已知的解决方法吗?

r ggplot2 ggmap

12
推荐指数
1
解决办法
6958
查看次数

ggmap路线查找 - 不会停留在道路上

我正在尝试使用ggmap中的route()函数映射路由.我的问题是这条路线不会留在路上.有什么东西我的route_df <- route(origin, destination, structure = "route")代码丢失了吗?或者是否有可用于实现此目的的替代功能?

示例代码:

install_github("rstudio/leaflet")
library(ggmap)
library(leaflet)
way1txt <- "Tinsletown, Vancouver, BC"
way2txt <- "Science World, Vancouver, BC"
route_df <- route(way1txt, way2txt, structure = "route")

# Map using Leaflet R
m = leaflet() %>% addTiles()
m = m %>% addPolylines(route_df$lon, route_df$lat, fill = FALSE)
m = m %>% addPopups(route_df$lon[1], route_df$lat[1], 'Origin')
m = m %>% addPopups(route_df$lon[length(route_df$lon)], 
                    route_df$lat[length(route_df$lon)], 'Destination')
m
Run Code Online (Sandbox Code Playgroud)

地图截图:

错误路线的地图截图

r ggmap

11
推荐指数
1
解决办法
1201
查看次数

热图使用ggmap按值绘制

我试图ggmap通过学校来看待教育成绩.我创建了所有学校的坐标列表和个别学生的分数如下:

     score      lat       lon
3205    45 28.04096 -82.54980
8275    60 27.32163 -80.37673
4645    38 27.45734 -82.52599
8962    98 26.54113 -81.84399
9199    98 27.88948 -82.31770
340     53 26.36528 -81.79639
Run Code Online (Sandbox Code Playgroud)

我首先使用了我参与的大多数教程中的模式:http : //journal.r-project.org/archive/2013-1/kahle-wickham.pdf http://www.geo.ut.ee/ AASA/LOOM02331/heatmap_in_R.html

library(ggmap)
library(RColorBrewer)

MyMap <- get_map(location = "Orlando, FL", 
                 source = "google", maptype = "roadmap", crop = FALSE, zoom = 7)

YlOrBr <- c("#FFFFD4", "#FED98E", "#FE9929", "#D95F0E", "#993404")

ggmap(MyMap) +
stat_density2d(data = s_rit, aes(x = lon, y = lat, fill = ..level.., alpha = ..level..), …
Run Code Online (Sandbox Code Playgroud)

r ggplot2 ggmap

11
推荐指数
1
解决办法
9730
查看次数

在ggplot中格式化纬度和经度轴标签

我有一个ggplot地图,例如:

library(ggmap)
ggmap(get_map())
Run Code Online (Sandbox Code Playgroud)

我希望轴标签自动标记为NS/WE:在上述情况下,例如,它应该显示95.4°E而不是lon -95.4.

我试图弄乱scales包和使用scale_x_continuousscale_y_continuous标签和打破选项,但我没有设法让它工作.

拥有一个scale_y_latitude和那将是非常棒的scale_x_longitude.

编辑:感谢@Jaap的回答,我得到了以下内容:

scale_x_longitude <- function(xmin=-180, xmax=180, step=1, ...) {
    ewbrks <- seq(xmin,xmax,step)
    ewlbls <- unlist(lapply(ewbrks, function(x) ifelse(x < 0, paste(x, "W"), ifelse(x > 0, paste(x, "E"),x))))
    return(scale_x_continuous("Longitude", breaks = ewbrks, labels = ewlbls, expand = c(0, 0), ...))
}
scale_y_latitude <- function(ymin=-90, ymax=90, step=0.5, ...) {
    nsbrks <- seq(ymin,ymax,step)
    nslbls <- unlist(lapply(nsbrks, function(x) ifelse(x < 0, paste(x, "S"), ifelse(x > 0, paste(x, "N"),x))))
    return(scale_y_continuous("Latitude", …
Run Code Online (Sandbox Code Playgroud)

r latitude-longitude ggplot2 axis-labels ggmap

11
推荐指数
1
解决办法
3637
查看次数

如何使用 R/传单在地图中绘制各个数据点?

我试图显示给定位置的各个点,就像相当于点图的地图。我尝试使用leafletR 中的库,但我只能将标记的大小映射到连续变量。是否可以将各个数据点映射为簇,而不是将标记的大小映射到连续变量?

我的数据看起来像这样

Lat,Lon,Place,People
19.877263,75.3390241,Aurangabad,1
20.2602939,85.8394548,Bhubaneshwar,2
30.7194022,76.7646552,Chandigarh,23
13.0801721,80.2838331,Chennai,25
11.0018115,76.9628425,Coimbatore,2
27.4844597,94.9019447,Dibrugarh,1
16.2915189,80.4541588,Guntur,1
17.3887859,78.4610647,Hyderabad,4
22.5677459,88.3476023,Kolkata,7
15.8309251,78.0425373,Kurnool,1
9.9256493,78.1228866,Madurai,1
Run Code Online (Sandbox Code Playgroud)

maps r leaflet ggmap r-leaflet

11
推荐指数
2
解决办法
8925
查看次数

叠加了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
查看次数

在ggmap中添加一个圆圈

我们假设我使用ggmap包生成伦敦地图:

library(ggmap)
library(mapproj)

map <- get_map(location = "London", zoom = 11, maptype = "satellite")

p <- ggmap(map)+ 
     theme(legend.position = "none") 

print(p)
Run Code Online (Sandbox Code Playgroud)

现在我想在这个图中添加一个带有一些中心坐标的圆(比方说:lon = -0.1,lat = 52.23)和半径,例如以公里为单位.我尝试使用类似问题的解决方案(用ggplot2绘制一个圆圈),你可以在这里添加一个这样的语句:

p <- p + annotate("path",
                  x = xc+r*cos(seq(0,2*pi,length.out=100)),
                  y = yc+r*sin(seq(0,2*pi,length.out=100)))
Run Code Online (Sandbox Code Playgroud)

它有效,但由于规模不同,圆圈实际上不是圆形.是否可以正确绘制它?任何帮助,将不胜感激!

编辑:我找到了使用不同包的解决方案(https://gis.stackexchange.com/questions/119736/ggmap-create-circle-symbol-where-radius-represents-distance-miles-or-km),输出结果是正确.不过,如果有人知道如何使用ggmap,请分享它.

google-maps r data-analysis ggplot2 ggmap

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

ggmap错误(as.vector(y)中的错误:尝试应用非函数)

我正在用ggmap做相对简单的事情并且很困惑,因为在我的Mac上运行良好的代码不能在我的PC上运行.

我运行这段代码:

library(ggmap)

map <- get_map(location = c(-122.175, 37.45635),
               maptype = "terrain",
               source = "google",
               crop = FALSE,
               zoom = 7)
 ggmap(map)
Run Code Online (Sandbox Code Playgroud)

,在我的Mac上运行正常,但在我的电脑上抛出此错误:

as.vector(y)出错:尝试应用非函数

任何帮助将非常感激.

r ggmap

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

地理热/等值线图的空间插值的最佳方法?

我想使用类似ggplot2ggmap产生任意值的热图,如每平方米楼价在街道水平,以在地理区域(高分辨率).

不幸的是,这项任务似乎相当困难,因为虽然ggplot2可以产生一个很大的密度图,但似乎无法在没有事先插值的情况下将这样的空间数据可视化.

为此,我使用了库akima(不规则数据的网格双变量插值)和mgcv(带有积分平滑度估计的广义加性模型),但是我对插值方法的了解最多也是平庸的,而且我能够产生的结果不是足够令人满意

请考虑以下示例:

数据

library(ggplot2)
library(ggmap)

## data simulation
set.seed(1945)

df <- tibble(x = rnorm(500, -0.7406, 0.03),
             y = rnorm(500, 51.9976, 0.03),
             z = abs(rnorm(500, 2000, 1000)))
Run Code Online (Sandbox Code Playgroud)

地图,散点图,密度图

## ggmap
map <- get_map("Bletchley Park, Bletchley, Milton Keynes", zoom = 13, source = "stamen", maptype = "toner-background")
q <- ggmap(map, extent = "device", darken = .5)

## scatterplot over map
q + geom_point(aes(x, y), data = …
Run Code Online (Sandbox Code Playgroud)

interpolation r geospatial ggplot2 ggmap

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