是否有可以使用gvisMap绘制的最大点数?或gvisMap不会绘制所有点

时间:2016-04-15 21:12:31

标签: r ggvis ggmap googlevis

修改 经过三天没什么兴趣,我正在添加一个完全可重现的例子......下面的代码可以生成1400个位置。前700个点以第一个区域为中心,第二个700点以第二个区域为中心位于西北方向。

datOne <- data.frame(
  Long = runif(700, -111.180000, -110.950000 ),
  Lat = runif(700, 43.180000, 43.440000),
  Area = "First")

datTwo <- data.frame(
  Long = runif(700, -111.850000, -110.900000),
  Lat = runif(700, 43.910000, 44.000000),
  Area = "Second")

dat <- rbind(datOne, datTwo)
dat$LatLong <- paste(dat$Lat, dat$Long, sep = ":")

head(dat)
       Long      Lat  Area                            LatLong
1 -110.9701 43.19509 First 43.1950901590148:-110.970063584852
2 -111.0258 43.25338 First 43.2533758980362:-111.025837010061
3 -111.1737 43.18016 First  43.180157370572:-111.173737878765
4 -111.1130 43.41193 First 43.4119294773275:-111.112970910808
5 -110.9909 43.34044 First 43.3404393909033:-110.990947539737
6 -110.9800 43.33428 First 43.3342766285082:-110.979969937215

如果我尝试用gvisMap绘制点,那么只有位于地图中第一个区域周围的位置,如下所示:

library(googleVis)
M2 <- gvisMap(dat, "LatLong", 
              options=list(showLine=TRUE, enableScrollWheel=TRUE, 
                           mapType='satlite', useMapTypeControl=TRUE, 
                           width="800", height="800",
                           colors = "['#0000ff']",
                           icons=paste0("{","'default': {'normal':
                                        'http://maps.google.com/mapfiles/kml/shapes/placemark_circle.png',\n",
                                        "'selected':'http://maps.google.com/mapfiles/kml/shapes/placemark_circle.png'",
                                        "}}")
              ))
plot(M2)

为了确认所有位置的格式正确,我可以将数据帧子集化为绘制点500:1000,其中包括两个区域中的位置。将第一行代码更改为

M2 <- gvisMap(dat[500:1000, ], "LatLong", 

将正确显示这两个区域的位置。所以,问题似乎不是格式化,但可能有最大数量的点可以绘制..?

是否可以在此处包含的可重现数据中绘制所有位置?

我们非常感谢您在上面dat数据框中绘制所有点的任何建议或代码。我很乐意从其他软件包中获取建议的代码,例如评论中提到的leaflet

3 个答案:

答案 0 :(得分:2)

只是把这个放在混合中,因为问题是关于最大点数。如果您发现自己需要绘制数万或数百万的点(或多边形或线条), mapview 将是一个选项:

library(mapview)
library(sp)

datOne <- data.frame(
  lng = runif(70000, -111.180000, -110.950000 ),
  lat = runif(70000, 43.180000, 43.440000),
  Area = "First")

coordinates(datOne) <- ~ lng + lat
proj4string(datOne) <- "+init=epsg:4326"

mapview(datOne)

请注意, mapview 仅适用于空间类,因此需要有效的proj4string()

答案 1 :(得分:1)

查看以下示例。这使用R小叶包并将弹出窗口绑定到区域列中的标记。

library(leaflet)

datOne <- data.frame(
  lng = runif(700, -111.180000, -110.950000 ),
  lat = runif(700, 43.180000, 43.440000),
  Area = "First")

datTwo <- data.frame(
  lng = runif(700, -111.850000, -110.900000),
  lat = runif(700, 43.910000, 44.000000),
  Area = "Second")

dat <- rbind(datOne, datTwo)
dat$latLng <- paste(dat$lat, dat$lng, sep = ":")

map<-leaflet(dat)
map<-addTiles(map)
map<-addMarkers(map,~lng,~lat,popup = ~as.character(Area))
map

答案 2 :(得分:1)

是的,使用Google Maps API可以通过googleVis

显示最多点数

如上所述:[https://developers.google.com/chart/interactive/docs/gallery/map#data-format]

注意:Lat-Long对选项可以更快地加载地图,尤其是对于大数据。我们建议您对大型数据集使用此选项。请访问Google Maps API,了解如何将地址转换为lat-long点。地图最多可显示400个条目;如果您的数据超过400行,则只会显示前400行。

上述leaflet适用于大于400点的数据集。