2017-05-27 15 views
0

Angenommen, ich habe geographische Daten über Kunden und Geschäfte und auch in welchem ​​Geschäft der Kunde seinen letzten Kauf getätigt hat. Ich möchte Kunden und Geschäfte (nach ihren Koordinaten) grafisch darstellen und Kunden mit ihren jeweiligen Geschäften verbinden.ggplot: So verbinden Sie Punkte basierend auf Spalten

Hier ist ein Spielzeug-Datensatz:

library(tidyverse) 
library(ggrepel) 

customer.data <- data.frame(
    customer = letters[1:12], 
    store = rep(paste0("S", 1:3), 4), 
    customer.lat = rnorm(12), 
    customer.lon = rnorm(12)) 

store.data <- data.frame(
    customer = NA 
    store = paste0("S", 1:3), 
    store.lat = rnorm(3), 
    store.lon = rnorm(3) 
) 


data <- left_join(customer.data, store.data, by = "store") %>% 
    arrange(store, customer) 

ggplot(data, aes(x = customer.lat, y = customer.lon, group = store)) + 
    geom_point(color = "blue") + 
    geom_point(aes(x = store.lat, y = store.lon), color = "red") + 
    geom_text_repel(aes(label = store)) 

enter image description here

So will ich ist es, alle Kunden von S1 Speicher mit seinem Punkt mit geom_line() oder geom_segment() und so weiter zu verbinden. Wie kann ich das machen?

+0

@MikeH. wenn ich eine geom_line nach dem ersten geom_point hinzufüge, verbindet sie die Kunden innerhalb des gleichen Stores, aber nicht mit ihren Stores. – iatowks

Antwort

3
ggplot(data, aes(x = customer.lat, y = customer.lon)) + 
    geom_point(aes(color = store)) + 
    geom_point(aes(x = store.lat, y = store.lon, color = store), size = 4) + 
    #geom_text_repel(aes(label = store)) + 
    geom_segment(aes(x = customer.lat, y = customer.lon, 
        xend = store.lat, yend = store.lon, 
        color = store)) 

enter image description here

Verwandte Themen