链网图怎么画

How to draw a chain network map

我想要一个中央仓库-客户供应链网络。我正在尝试用连接线绘制 394 个城市。但是我收到一条错误消息。我正在使用以下代码。 请注意,我的数据框包含城市的纬度和经度。起点是同一个地方,而目的地每一行都不同。

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)

      }

我留下一个演示,展示我通常如何处理此类任务。我从地图包中借用了一个数据集。有 long/lat 个世界城市信息。我对一些专注于美国的数据进行了子集化。我向该对象添加了两列。一个是 long,另一个是 lat 作为线条的起点。在这种情况下,我随机选择了丹佛。我使用大圆圈来获取丹佛和目的地城市之间的线路。然后,我将数据转换为 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")