1

mapsとパッケージを使用して作成しgeosphereた航空会社の地図のような地図があります。ただし、マップ内の「ルート」の方向を示すために、線に矢印を追加したいと思います。私の現在の作業コードを以下に示します ( FlowingDataの素晴らしいチュートリアルに基づいています)。以前に線関数の代わりに矢印関数を使用しようとしましたが、矢印を地球圏の曲線に合わせる方法や、矢印がこのように見えるように線に沿って間隔を空ける方法がわかりません:

-->-->-->

私は 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)
}
4

1 に答える 1

0

このコードを for ループに挿入するinter<-と、矢じり (およびいくつかの警告) が表示されました。

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

ここに画像の説明を入力

明らかに、いくつかの微調整が必​​要です。?arrowsオプションの全範囲については、を参照してください。interマトリックスの最後から 2 番目 (または最後から 5 番目?) のポイントを使用することもできます。選択したルートにのみ矢印を付けたい場合もあります。

于 2015-04-04T19:59:45.463 に答える