标签: ggmap

ggmap/ggplot2中多个图例的对齐

我试图用两个表示形状和颜色的图例来制作地图(下面的例子中为"Type"和"Org"),并且有图例插图.我可以放置传说,但我希望它们左对齐,以便它们的左边缘对齐.除了相互集中之外,我无法做出任何其他事情:

require(ggplot2)
require(ggmap)
require(grid)
require(mapproj)

data <- data.frame(Org=rep(c("ABCDEFG","HIJKLMNOP","QRSTUVWX"),4)
                   , Type=rep(c("Y","Z"),6), Lat=runif(12,48,54.5)
                   , Long=runif(12,-133.5,-122.5))

osmMap <- get_map(location=c(-134,47.5,-122,55), source = 'osm')

points <- geom_jitter(data=data, aes(Long, Lat, shape=Type
                                     , colour=Org))

legend <- theme(legend.justification=c(0,0), legend.position=c(0,0)
                , legend.margin=unit(0,"lines"), legend.box="vertical"
                , legend.key.size=unit(1,"lines"), legend.text.align=0
                , legend.title.align=0)

ggmap(osmMap) + points + legend
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

r ggplot2 ggmap r-grid

17
推荐指数
1
解决办法
4288
查看次数

有没有办法为ggmap添加比例尺(线性距离)?

并不是说这对我的问题至关重要,但这是我的情节示例,我想在其上添加一个比例尺.

ggmap(get_map(location = "Kinston, NC", zoom = 12, maptype = 'hybrid')) +
geom_point(x = -77.61198, y = 35.227792, colour = "red", size = 5) +
geom_point(x = -77.57306, y = 35.30288, colour = "blue", size = 3) +
geom_point(x = -77.543, y = 35.196, colour = "blue", size = 3) +
geom_text(x = -77.575, y = 35.297, label = "CRONOS Data") +
geom_text(x = -77.54, y = 35.19, label = "NOAA") +
geom_text(x = -77.61, y = 35.22, label = …
Run Code Online (Sandbox Code Playgroud)

r ggplot2 ggmap

17
推荐指数
2
解决办法
3916
查看次数

在网格外部绘制点作为箭头指向R中的ggplot2的数据

我正在生成具有世界规模数据的地图,然后放大到某些地区.在放大视图中,我想通过将箭头从框的中心指向数据点在外部世界中的位置来显示边界框外还有其他数据点.

注意:我不需要它是一个"大圆"路径,只需要墨卡托投影中的XY矢量,因为我想这对于"普通"图也是有用的.

例如,这是显示数据范围的世界地图:

在此输入图像描述

这里是放大的视图,手动添加洋红色箭头以显示我想要生成的内容.

特写

下面是我用来生成这两个基本图的代码和数据.我需要的是一种生成箭头的方法.

require(ggplot2)

te = structure(list(lat = c(33.7399, 32.8571, 50.2214, 36.96263, 33.5835, 
33.54557, 47.76147, 48, 59.40289, 35.93411, 32.87962, 38.3241, 
50.03844, 37.44, 50.07774, 50.26668, 36.5944), lng = c(-118.37608, 
-117.25746, -5.3865, -122.00809, -117.86159, -117.79805, -124.45055, 
-126, -146.35157, -122.931472, -117.25285, -123.07331, -5.26339, 
25.4, -5.709894, -3.86828, -121.96201)), .Names = c("lat", "lng"
), class = "data.frame", row.names = c(NA, -17L))

all_states = map_data("world")

# world version:
wp = ggplot() + 
      geom_polygon(data = all_states, aes(x = long, y = lat, group = …
Run Code Online (Sandbox Code Playgroud)

plot dictionary r ggplot2 ggmap

16
推荐指数
2
解决办法
831
查看次数

用R中的ggplot绘制谷歌地图

我正在尝试绘制使用RgoogleMaps包查询的Google地图,并将其与ggplot结合使用.最后,我想显示总人口的使用情况geom_point,有点类似于下图,但是由于过度密谋,我试图集中精力于蒙哥马利地区.

我很沮丧,因为我不能画出我的查询地图中R.我尝试了几个包,如中read.jpegpng,但它并没有完全制定.

R代码:

#query google map
al1 <- GetMap(center=c(32.362563,-86.304474), zoom=11, destfile = "al2.jpeg", 
       format="jpg",maptype="roadmap")

#load only specific states
alabama <- subset(all_states, region %in% c("alabama"))

#population
p1 <- ggplot()
p1 <- p1 + geom_polygon(data=alabama, 
      aes(x=long, y=lat, group=group), colour="white", fill="grey10")
p1 <- p1 + geom_point(data=quote, aes(x=IntPtLon, y=IntPtLat, size=TotPop, 
      color=TotPop),colour="coral1") + scale_size(name="Total Pop")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

编辑:

这是我粗略的结果.我还是想:

  • 更改点的大小,因为它们在地图上看起来相当小.
  • 使点透明或未填充,以便地图仍然可见.

在此输入图像描述

al1 <- get_map(location = c(lon = -86.304474, lat = 32.362563), zoom = 11, maptype = 'terrain')
al1MAP <- …
Run Code Online (Sandbox Code Playgroud)

google-maps geocoding r ggplot2 ggmap

15
推荐指数
1
解决办法
2万
查看次数

确定两个邮政编码之间的距离(mapdist的替代方案)

我想计算大约之间的距离.100,000种不同的邮政编码.我知道包中的mapdist功能ggmap

mapdist 完美的工作:

library(ggmap)
mapdist('Washington', 'New York', mode = 'driving')

#         from       to      m      km    miles seconds  minutes    hours
# 1 Washington New York 366284 366.284 227.6089   13997 233.2833 3.888056


mapdist('20001', '10001', mode = 'driving')

#    from    to      m      km    miles seconds minutes    hours
# 1 20001 10001 363119 363.119 225.6421   13713  228.55 3.809167
Run Code Online (Sandbox Code Playgroud)

但是,mapdist依赖于Google地理编码API,该API 每天的查询限制为2,500个地理定位请求.

您是否知道使用具有更高请求限制的其他服务(例如诺基亚地图或必应)来计算两点之间距离的替代r代码?

r spatial geospatial google-maps-api-3 ggmap

14
推荐指数
1
解决办法
2万
查看次数

在ggplot2中的地图上围绕点绘制具有特定半径的圆

我有一张地图,上面画着8个点:

library(ggplot2)
library(ggmap)
data = data.frame(
    ID = as.numeric(c(1:8)),
    longitude = as.numeric(c(-63.27462, -63.26499, -63.25658, -63.2519, -63.2311, -63.2175, -63.23623, -63.25958)),
    latitude = as.numeric(c(17.6328, 17.64614, 17.64755, 17.64632, 17.64888, 17.63113, 17.61252, 17.62463))
)

island = get_map(location = c(lon = -63.247593, lat = 17.631598), zoom = 13, maptype = "satellite")
islandMap = ggmap(island, extent = "panel", legend = "bottomright")
RL = geom_point(aes(x = longitude, y = latitude), data = data, color = "#ff0000")
islandMap + RL + scale_x_continuous(limits = c(-63.280, -63.21), expand = c(0, …
Run Code Online (Sandbox Code Playgroud)

gis geometry r ggplot2 ggmap

14
推荐指数
3
解决办法
9439
查看次数

增加ggmap的地理编码功能中的api限制(在R中)

我正在尝试使用库中的geocode函数来获取特定位置的坐标.到目前为止,我能够正常使用该功能.ggmapsR

我遇到的问题是我希望将每日限制从2,500增加到100,000.官方Google 文档 说,如果您在项目上启用结算,这很容易实现,我很乐意这样做.继续此过程后,Google Developers Console将为您提供个性化的API密钥.

但是,该geocode功能无法选择放入此个性化API密钥.相反,它要求client(业务用户的客户端ID)和signature(业务用户的签名),这是Google Maps API for Work客户可以访问API的方式.我知道这也是一个选项,但这似乎是一个非常大的用例,因为Google Maps API for Work似乎是为大型企业帐户设计的:

根据年度合同购买,每24小时的每日配额为100,000个请求.

所以我的问题归结为:我可以使用库中的geocode函数来ping Google Maps Geocoding API吗?ggmapsR

google-maps r google-maps-api-2 geocode ggmap

14
推荐指数
4
解决办法
9744
查看次数

如何将geom_sf生成的地图放在ggmap生成的栅格之上

我尝试了以下代码:

library(ggplot2)
library(ggmap)
library(sf)
nc <- st_read(system.file("shape/nc.shp", package = "sf"))
str(nc)

 Classes ‘sf’ and 'data.frame':  100 obs. of  15 variables:
 $ AREA     : num  0.114 0.061 0.143 0.07 0.153 0.097 0.062 0.091 0.118 0.124 ...
 $ PERIMETER: num  1.44 1.23 1.63 2.97 2.21 ...
 $ CNTY_    : num  1825 1827 1828 1831 1832 ...
 $ CNTY_ID  : num  1825 1827 1828 1831 1832 ...
 $ NAME     : Factor w/ 100 levels "Alamance","Alexander",..: 5 3 86 27 66 46 15 37 …
Run Code Online (Sandbox Code Playgroud)

maps r ggplot2 ggmap r-sf

14
推荐指数
2
解决办法
2835
查看次数

R中的ggmap - 在裁剪地图上保留谷歌版权信息

我想知道是否有人知道如何在 R 中的 ggmap 绘制的地图上保留谷歌版权信息(使用新比例)?

例如:

library(ggmap)
library(ggplot2)

# download basemap
ggmap::register_google(key="xxx") # insert your hey here xxx
ggmap::ggmap_show_api_key()
base_map <- get_googlemap(center = c(lon= -2.325278, lat=54.6000000), zoom = 5, style = 'element:labels|visibility:off',color= "bw")
Run Code Online (Sandbox Code Playgroud)

当我在base_map不改变比例的情况下进行绘图时,版权信息会插入到绘图的底部,如下所示:

ggmap(base_map, extent = "panel")
Run Code Online (Sandbox Code Playgroud)

map_with_copyright_info)

然而,当我绘制base_map一个新的x,并y axis放大到英国大陆。我还裁剪了版权信息。如下:

ggmap(base_map, extent = "panel")+
  scale_x_continuous(limits = c(-7, 3), expand = c(0, 0)) +
  scale_y_continuous(limits = c(49.5, 59), expand = c(0, 0))
Run Code Online (Sandbox Code Playgroud)

map_zoom_no版权所有

有谁知道我如何获得第二个情节但有出版所需的版权信息?

我试图更改zoom=函数中的参数,get_googlemap()但它似乎总是将英国的顶部或底部剪掉,并且在绘制数据时我需要能够看到整个区域。

非常感谢您的帮助!

google-maps r ggplot2 ggmap

13
推荐指数
2
解决办法
385
查看次数

使用ggmap和geom_path绘制街道

我喜欢ggmap在特定区域绘制街道.我通过立交桥api从osm获取数据.它适用于大多数街道geom_path.然而,一些街道搞砸了.任何提示都表示赞赏.

请查看http://overpass-turbo.eu/获取所需的输出.您可以在下面的R代码中找到查询.

library(httr)
library(tidyverse)
#> ?? Attaching packages ??????????????????????????????????????????????????????????????????????????????????????????? tidyverse 1.2.1 ??
#> ? ggplot2 2.2.1     ? purrr   0.2.4
#> ? tibble  1.4.2     ? dplyr   0.7.4
#> ? tidyr   0.8.0     ? stringr 1.3.0
#> ? readr   1.1.1     ? forcats 0.3.0
#> ?? Conflicts ?????????????????????????????????????????????????????????????????????????????????????????????? tidyverse_conflicts() ??
#> ? dplyr::filter() masks stats::filter()
#> ? dplyr::lag()    masks stats::lag()
library(ggmap)
library(rlist)


# Get data from overpass api
query <- paste('[out:json];',
  '(way["highway"~"primary|residential"](53.5970, 9.9010, 53.6050, 9.9080););',
  '(._;>;);',
  'out body;') …
Run Code Online (Sandbox Code Playgroud)

r ggplot2 ggmap overpass-api

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