2

恐怕我在做应该相对容易的事情时遇到了一些麻烦。我正在尝试从这个问题World Map - Plotting Circles, size of circle related to No of using the output from the Google geocode API 中有效地复制 ggplot 地图。我向它传递了一堆格式有问题的自由文本位置数据(即它擅长什么),并得到下表。

> 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 示例,我需要(至少)获得一个重复纬度/经度整数的计数器,所以我知道伦敦何时有 65 人,但似乎我不能只使用 userlocations$location ,因为这个字段只包含我最初传递给 Google 的非规范化自由文本;只有 lon 和 lat 似乎有有用的数据。

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

4

1 回答 1

0

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

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

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

于 2012-12-25T07:55:03.390 回答