R 基于ID的ggmap中的连接点

R 基于ID的ggmap中的连接点,r,ggmap,R,Ggmap,我想根据建筑物的坐标在地图上标出它们。在我的数据集中,我有lat和long坐标,但我也有结构的ID(ID)和结构的ID(ID_conn) 我还想在“相关”点之间划一条线。例如:id为0的观测值将只是一个点。但是id为101的观测值有id_conn 0,因此我希望在结构0和101之间有一条线 下面是一些示例代码,我只是绘制结构,当然没有线条。我很抱歉,如果我也应该在这里提供我的静态映射API键-我认为这些都是特定于个人的。从示例数据集中可以看出,创建的网络有时会重置为以前的ID,因此ID_conn

我想根据建筑物的坐标在地图上标出它们。在我的数据集中,我有lat和long坐标,但我也有结构的ID(ID)和结构的ID(ID_conn)

我还想在“相关”点之间划一条线。例如:id为0的观测值将只是一个点。但是id为101的观测值有id_conn 0,因此我希望在结构0和101之间有一条线

下面是一些示例代码,我只是绘制结构,当然没有线条。我很抱歉,如果我也应该在这里提供我的静态映射API键-我认为这些都是特定于个人的。从示例数据集中可以看出,创建的网络有时会重置为以前的ID,因此ID_conn并不总是在以前的观察中找到的ID。如果有人能在这里提供见解,我将不胜感激

install.packages("ggmap")
library(ggmap)

register_google(##your Static Maps API key##,
                account_type = "standard")

Gmap <- get_map(location = c(lon = 0, lat = 0), zoom = 9)

aux <- data.frame(
  id = c(0, 101, 102, 103, 104, 105, 106, 201, 202, 203, 204, 205),
  lat_coord = c(0, 0.1, 0.2, 0.3, 0.3, 0.4, 0.5, 0, 0, 0.1, 0, -0.1),
  lon_coord = c(0, 0.1, 0.2, 0.2, 0.3, 0.2, 0.2, 0.2, 0.3, 0.4, 0.4, 0.4),
  id_conn = c(NA, 0, 101, 102, 102, 103, 105, 101, 201, 202, 202, 202)
)

ggmap(Gmap) +
  geom_point(data=aux, aes(x=lon_coord, y=lat_coord)) +
  theme_void() +
  theme(legend.key = element_rect(fill = "black")) +
  coord_equal(ratio=1)

install.packages(“ggmap”)
图书馆(ggmap)
注册google(###您的静态地图API密钥###,
账户类型=“标准”)

你在找这样的东西吗

aux %>%
  inner_join(aux, by = c("id_conn" = "id")) %>%
  select(-id_conn.y) -> aux2


ggmap(Gmap) +
  geom_segment(data = aux2, aes(x = lon_coord.x, y = lat_coord.x, 
                                xend = lon_coord.y, yend = lat_coord.y), 
               color = "yellow", arrow = arrow(length = unit(0.2,"cm"))) +
  geom_point(aes(x=lon_coord.x, y=lat_coord.x),data=aux2) +
  geom_text(aes(x=lon_coord.x, y=lat_coord.x, label = id), data=aux2, hjust = -0.5) 

秘密成分是
geom_segment()
,它允许您添加线段。可以根据需要调整箭头的外观


完美。非常感谢。