R ggplot连接地图上的一个点与同一地图上的多个点

时间:2017-09-11 15:07:28

标签: r ggplot2 tidyverse

我正在尝试将美国地图上的一个位置与美国地图上的多个位置相关联。

library(tidyverse)
library(flights13)

首先,我将从2013年1月1日起选择纽瓦克机场(EWR)的所有航班,并抓住目的地的地理坐标(如果在机场中可用 - 并在顶部添加EWR的位置) ):

ewr <- flights %>% 
         filter(year== 2013, month== 1, day== 1, origin== "EWR") %>%  
         select(dest) %>% 
         distinct(dest) %>% 
         arrange(dest)

# Join it with airports database, add column "origin" filled with EWR:
mydest <- ewr %>% 
            left_join(select(airports, faa, lat, lon), 
                      by = c("dest" = "faa")) %>%
            filter(!is.na(lat)) %>% 
            select(lat, lon)
mydest

# Grab EWR coords:
ewrcoords <- airports %>% 
               filter(faa == "EWR") %>% 
               select(lat, lon)
ewrcoords
mydest <- rbind(ewrcoords, mydest)

然后,我想将EWR(纽瓦克)位置与所有目的地位置连接起来。我尝试使用循环来完成它,但它在ggplot内没有工作:

mydest %>% 
  ggplot(aes(lon, lat)) +
  borders("state") +
  geom_point() +
  coord_quickmap() %>%
  for(i in 2:nrow(mydest)) {
    geom_line(data = mydest[c(1,i),], aes(lon, lat), 
              color = "black", size = 1)
  }

没有循环可以做到吗?或者我怎么能让循环工作? 非常感谢你!

1 个答案:

答案 0 :(得分:2)

试试这个:

colnames(ewrcoords) = c("EWRlat", "EWRlon")
mydest <- cbind(ewrcoords, mydest)

mydest %>% 
  ggplot(aes(lon, lat)) +
  borders("state") +
  geom_point() +
  geom_segment(aes(y=EWRlat, x=EWRlon, xend=lon, yend=lat))+
  coord_quickmap() 
编辑:抱歉没有看到它已经在eipi10的评论中。