修改 经过三天没什么兴趣,我正在添加一个完全可重现的例子......下面的代码可以生成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
。
答案 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点的数据集。