将谷歌地理编码输出转换为R中的地图



恐怕我在做应该相对容易的事情时遇到了一些麻烦。我正在尝试有效地复制这个问题中的 ggplot 地图世界地图 - 绘制圆圈,与使用 Google 地理编码 API 输出的编号相关的圆圈大小。我向它传递了一堆格式可疑的自由文本位置数据(即它擅长什么),并得到了下表。

> summary(userlocations)
       ID              lon                lat             lonmin        
 Min.   :   1.0   Min.   :-169.867   Min.   :-82.86   Min.   :-180.000  
 1st Qu.: 618.8   1st Qu.: -91.815   1st Qu.: 33.72   1st Qu.: -91.956  
 Median :1200.0   Median : -77.201   Median : 40.06   Median : -78.110  
 Mean   :1220.5   Mean   : -49.884   Mean   : 35.40   Mean   : -51.709  
 3rd Qu.:1804.2   3rd Qu.:  -2.248   3rd Qu.: 45.52   3rd Qu.:  -2.798  
 Max.   :2500.0   Max.   : 174.886   Max.   : 71.29   Max.   : 174.771  
                  NA's   :643        NA's   :643      NA's   :643       
     lonmax             latmin           latmax            location   
 Min.   :-169.774   Min.   :-90.00   Min.   :-61.00   London   :  65  
 1st Qu.: -89.013   1st Qu.: 33.07   1st Qu.: 33.95   Canada   :  31  
 Median : -75.891   Median : 39.74   Median : 40.59   Atlanta  :  25  
 Mean   : -47.521   Mean   : 34.01   Mean   : 36.86   England  :  22  
 3rd Qu.:  -1.521   3rd Qu.: 44.37   3rd Qu.: 47.08   New York :  22  
 Max.   : 180.000   Max.   : 71.23   Max.   : 85.41   Las Vegas:  21  
 NA's   :643        NA's   :643      NA's   :643      (Other)  :3286

虽然我知道的足够多,可以做这样的事情:

map(database="worldHires")
points(userlocations$lon, userlocations$lat, pch=20)

为了重现 ggplot 示例,我需要(至少)获取重复的 lat/lon 整体计数器,以便我知道伦敦何时有 65 人,但似乎我不能只使用 userlocations$location,因为此字段仅包含我首先传递给 Google 的非规范化自由文本; 只有 LON 和 LAT 似乎有有用的数据。

对于这个问题的简单性,我深表歉意,但如果有人能提供帮助,我将不胜感激。

如果您可以将代码整齐地格式化为两个向量 x(经度)和 y(纬度),那么您可以使用:

require(ggplot2)
ggplot(data.frame(x = x, y = y, circle_size = '\add a vector'), aes(x, y, size = circle_size) + geom_point()

我没有测试上述函数,但它应该产生与您提供的示例非常相似的图。

最新更新