r - 如何使用 ggvis 和映射包(即 ggmap)在 map 上交互地绘制空间数据

标签 r map ggmap ggvis

我有沿着海岸线的空间点,在几年之间。使用 this 的答案,我已经绘制了这些点并使用了一个控制不透明度的 slider 来显示不同的年份。

目前是否可以在使用 ggvis 时覆盖一个简单的 map ,可能使用 ggmap 或任何其他映射包?

library(ggmap)
library(ggvis)

#simple dataset
long <- c(-53.53167, -53.53167, -53.68000, -53.64667, -53.68500)
lat <- c(47.16833, 47.18500, 47.01167, 47.00500, 47.98833)
year <- c(1995:1999)
count <- rpois(5, 20)
data1 <- as.data.frame(cbind(year, count, lat, long))

#interactive data visual, with the goal of having a map in the background
data %>% 
  ggvis(~long, ~lat, size=~count) %>% 
  layer_points(opacity=input_slider(min(data$year), max(data$year),     step=1,map=function(x) ifelse(data$year == x, 1, 0)))

#in ggmap, an example of a potential map to make interactive
mylocation <- c(min(long), min(lat))
mymap <- get_map(location=mylocation, source="google", maptype="roadmap", zoom = 8)
ggmap(mymap) + geom_point(data=data1, aes(x=long, y=lat, size=count), alpha=0.6)

最佳答案

有点晚了,但是mapview可以在这里为您提供解决方案(它仅在几天前发布给 CRAN)。

library(ggmap)
library(ggvis)
library(sp)
library(mapview)

#simple dataset
long <- c(-53.53167, -53.53167, -53.68000, -53.64667, -53.68500)
lat <- c(47.16833, 47.18500, 47.01167, 47.00500, 47.98833)
year <- c(1995:1999)
count <- rpois(5, 20)

# convert to SpatialPointsDataFrame
data1 <- as.data.frame(cbind(year, count, lat, long))
proj4string(data1) <- CRS("+init=epsg:4326")

# view it
mapview(data1)

这不提供时间 slider 等,但会在每个点提供属性的弹出窗口,因此可以通过这种方式检索年份。对于带有时间 slider 的解决方案,您可以使用 mapview 构建一个 Shiny 的应用程序。

干杯
蒂姆

关于r - 如何使用 ggvis 和映射包(即 ggmap)在 map 上交互地绘制空间数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25799934/

相关文章:

r - 如何在R中反转ggmap栅格图像的颜色?

r - ggmap,使用 coord_cartesian 将所有点推向北方

c - 在R中调用C时是否有可访问的 vector 接口(interface)函数

r - 包 ‘forecast’ 的安装具有非零退出状态

R-按列名AS CHARACTER排序data.frame

generics - 如何在 Swift 中返回一个序列?

c++ - 使用 std::string 作为 std::map 的键

r - 使用操作按钮转到另一个选项卡

c++ - 在 3 元素映射 C++ 中添加新项目并使用时间键搜索

r - 热图透明度、着色和特异性不令人满意