2017-12-06 6 views
1

Ich möchte ein zentrales Lager-Kunden-Supply-Chain-Netzwerk. Ich versuche 394 Städte mit Verbindungslinien zu plotten. Aber ich habe eine Fehlermeldung erhalten. Ich verwende den folgenden Code. Beachten Sie, dass mein Datenrahmen den Breiten- und Längengrad der Städte enthält. Ursprung ist ein selbe Ort, während ein Ziel jede Zeile ändert.Wie zeichne ich eine Kette Netzwerkkarte

Antwort

1

Ich lasse eine Demonstration zeigen, wie ich diese Art von Aufgabe normalerweise bearbeite. Ich habe einen Datensatz aus dem Kartenpaket ausgeliehen. Es gibt lange/lat Informationen für Weltstädte. Ich unterteilte einige der Daten, die sich auf die USA konzentrierten. Ich habe diesem Objekt zwei Spalten hinzugefügt. Einer ist für lange und der andere ist für Lat ein Startpunkt für Linien. In diesem Fall wählte ich Denver zufällig. Ich benutzte einen großen Kreis, um Linien zwischen Denver und den Zielstädten zu bekommen. Dann habe ich die Daten in data.frame konvertiert, sodass ggplot eine Karte mit fortify() zeichnen kann.

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