2017-12-06 4 views
1

私は中央の倉庫 - 顧客サプライチェーンネットワークが必要です。私は394都市を接続線でプロットしようとしています。しかし、私はエラーメッセージを受け取りました。私は次のコードを使用しています。 私のデータフレームには都市の緯度と経度が含まれています。 Originは同じ場所ですが、宛先はすべての行を変更します。チェーンネットワークマップを描く方法

map <-get_map(location='united states', zoom=4, maptype = "satellite", 
      source='google',color='color') 
p <- ggmap(map) 

    for(i in 2:nrow(x)) 

    { 
     plot_data <-as.data.frame(rbind(c(unique(x$Origin),as.numeric(unique(x$LAT.x)),as.numeric(unique(x$LONG.x))), 
             c(x$Destination[i],x$LAT.y[i],x$LONG.y[i]))) 

     colnames(plot_data) <- c("Place","Lat","Long") 
     plot_data$Lat <- as.numeric(as.character(plot_data$Lat)) 
     plot_data$Long <- as.numeric(as.character(plot_data$Long)) 

     p <- p + geom_point(data=plot_data, aes(x=Long, y=Lat),color="blue",size=3) 
     p <- p + geom_path(data=plot_data, aes(x=Long, y=Lat), color="red", size=1) 

     } 

答えて

1

私は通常この種のタスクをどのように処理するかを示すデモを残します。マップパッケージからデータセットを借りました。世界の都市には長い/緯度の情報があります。私は米国に焦点を当てたデータの一部をサブセット化しました。このオブジェクトに2つの列を追加しました。 1つは長く、もう1つは線の始点にlatです。この場合、私はランダムにDenverを選んだ。私はデンバーと行き先の都市の間に線を引くために大きな円を使用しました。次に、データをdata.frameに変換して、ggplotがfortify()を使用してマップを描画できるようにしました。

library(ggmap) 
library(maps) 
library(dplyr) 
library(ggplot2) 
library(geosphere) 

data(world.cities) 

mymap <- get_map(location = "texas", maptype = "watercolor", source = "stamen", zoom = 4) 

foo <- world.cities %>% 
     filter(pop >= 500000 & country.etc == "USA") %>% 
     mutate(start_long = -104.9903, 
       start_lat = 39.7392) %>% 
     do(fortify(as(gcIntermediate(.[,c("start_long", "start_lat")], 
            .[,c("long", "lat")], 
            100, 
            breakAtDateLine = FALSE, 
            addStartEnd = TRUE, 
            sp = TRUE), "SpatialLinesDataFrame"))) 

g <- ggmap(mymap) + 
    geom_path(data = foo, aes(x = long, y = lat, group = id), color = "red") 

enter image description here