2017-08-11 67 views
0

我有一些Lat/Long來賓參與事件的數據(我在下面添加了數據,只是前幾行,但我的df更大)。將行添加到R/ggplot中的中心點(經緯度/長度)

Name, n, Town, State, Country, Lat, Long 
Bob, 5, Dundee, n/a, Scotland, 56.462018, -2.970721 
Bob, 1, Forfar, n/a, Scotland, 56.643558, -2.889062 
Jefferson, 1, Inverness, n/a, Scotland, 57.477773, -4.224721 
Dave, 2, London, n/a, England, 51.507351, -0.127758 
Randy, 2, Dublin, n/a, Ireland, 53.349805, -6.260310 
Buck, 2, Landing, NJ, USA, 40.905411, -74.665695 
John, 2, Randolph, NJ, USA, 40.847806, -74.574725 
Frank, 1, Morris Plains, NJ, USA, 40.839592, -74.481870 
Jimmy, 1, Henryville, PA, USA, 41.093703, -75.241293 
Mike, 1, Cliffside Park, NJ, USA, 40.821489, -73.987639 
Spence, 1, North Bergen, NJ, USA, 40.804267, -74.012084 
Jimmy, 1, West New York, NJ, USA, 40.787879, -74.014306 
Jerry, 2, North Bergen, NJ, USA, 40.804267, -74.012084 
Dingle, 1, North Bergen, NJ, USA, 40.804267, -74.012084 

然後,我有事件地點的緯度/經度:

lat<-40.853988 
long<--74.829055 

我想什麼做的是情節都爲客人的散點圖點,然後有一個單一的走行從每個客人點到事件地點。

獲取散佈很簡單:

### Copy Data from above to Clipboard 
event<-read.table(file = "clipboard", sep = ",", header=TRUE) 
ggplot(event, aes(x=Long, y=Lat)) + 
    geom_point(color="darkred", size=2, alpha=.3) + 
    geom_point(aes(x=long, y=lat), color="blue", size=3) 

現在,有沒有辦法有一個行來自每個客人點(紅點)的事件位置(藍點)?

我試過geom_path(),但是這樣系統地添加了一條從點到點的直線。

回答

1

您可以使用geom_segment。首先將目標緯度/長度添加到數據庫中

lat<-40.853988 
long<--74.829055 
event$lat1 <- lat 
event$long1 <- long 

ggplot(event, aes(x=Long, y=Lat)) + 
    geom_point(color="darkred", size=2, alpha=.3) + 
    geom_point(aes(x=long, y=lat), color="blue", size=3) + 
    geom_segment(aes(xend = long1, yend = lat1)) 
0

這樣的事情呢?它的作用是模擬結構geom_path爲不同的羣體,其中每個組是從原來的一個點DF

require(dplyr) 
require(ggplot2) 
EventCoords <- event %>% mutate(Lat=lat, Long=long,order=2,group=1:nrow(event)) 
event <- event %>% mutate(group=1:nrow(.),order=1) %>% rbind(EventCoords) 
P1 <- ggplot(event, aes(x=Long, y=Lat)) + 
    geom_point(color="darkred", size=2, alpha=.3) + 
    geom_point(aes(x=long, y=lat), color="blue", size=3) 
P1 <- P1 + geom_path(aes(group=group)) 

enter image description here