如何将方向箭头添加到R中地图上绘制的线条?

时间:2015-04-04 19:36:39

标签: r dictionary maps data-visualization geosphere

我已经使用看起来像航空公司地图的地图和地圈等功能制作了地图。但是,我想在线上添加箭头来显示"路线"的路线。在我的地图中。您可以在下面看到我当前的工作代码(基于FlowingData的精彩教程)。我之前尝试使用箭头功能代替线条功能,但我不确定如何使箭头与地圈曲线一致,或确保箭头沿着线条间隔,以便它们看起来像这样:

- &GT - → - →;

我对R来说非常新,所以任何和所有的帮助都将非常感激。提前谢谢。

library(maps)
library(geosphere)
read.csv("http://marsiccr.github.io/Data/airports.csv", header=TRUE, as.is=TRUE) -> airports
read.csv("http://marsiccr.github.io/Data/leaders.csv", header=TRUE, as.is=TRUE) -> flights
pal <- colorRampPalette(c("#f2f2f2", "blue"))
colors <- pal(100)
colleges<-NULL
colleges$name <- airports$insname
colleges$long <- airports$long
colleges$lat <- airports$lat
colleges
map("state")
map("state", col="#f2f2f2", fill=TRUE, bg="white", lwd=0.25)
fsub <- flights[flights$type == "aau",]
fsub <- fsub[order(fsub$cnt),]
maxcnt <- max(fsub$cnt)
for (j in 1:length(fsub$type)) {
air1 <- airports[airports$unitid == fsub[j,]$school1,]
air2 <- airports[airports$unitid == fsub[j,]$school2,]
inter <- gcIntermediate(c(air1[1,]$long, air1[1,]$lat), c(air2[1,]$long, air2[1,]$lat), n=100, addStartEnd=TRUE)
colindex <- round( (fsub[j,]$cnt / maxcnt) * length(colors) )

lines(inter, col=colors[colindex], lwd=0.8)
}

1 个答案:

答案 0 :(得分:0)

inter<-给我箭头(以及一些警告)之后,将此代码转移到for循环中

tinter <- tail(inter,2)
arrows(tinter[1,1], tinter[1,2], tinter[2,1], tinter[2,2]) 

enter image description here

显然有一些调整要做。有关所有选项,请参阅?arrows。您还可以使用inter矩阵中的倒数第二个(或第五个到最后一个?)点。您可能还希望只为所选路线添加箭头。