2016-03-07 1 views
0

Voici mes données,Traçage les chemins empruntés par les utilisateurs des cartes en R

Name datetime    latitude longitude mode 
A 2016-01-11 02:00:04 PST 40.07054 -76.288572 Cycle 
A 2016-01-11 02:10:04 PST 39.82271579 -77.2300438 Cycle 
A 2016-01-11 02:20:04 PST 39.83636098 -77.2061907 Cycle 
B 2016-01-02 03:55:58 PST 40.009918 -75.188196 Car 
B 2016-01-02 03:59:58 PST 39.94432271 -76.5933571 Car 
B 2016-01-02 04:10:58 PST 39.91651225 -77.1641403 Car 

Je veux tracer le chemin emprunté par chaque utilisateur le long du temps de date. L'affichage de sortie est comme des chemins distincts dans un graphique, où chaque chemin est pour un utilisateur et dans chaque latitude et longitude, la date et l'heure sont montrées et aussi le long du chemin, le mode devrait être montré. Je ne suis pas sûr de savoir comment faire cela dans R. Quelqu'un peut-il m'aider à faire cela?

Ce qui suit est l'exemple reproductible,

names = c('A','A','A','B','B','B') 
datetime = c('2016-01-11 02:00:04 PST','2016-01-11 02:10:04 PST','2016-01-11 02:20:04 PST','2016-01-02 03:55:58 PST','2016-01-02 03:59:58 PST','2016-01-02 04:10:58 PST') 
latitude = c(40.07054,39.82271579,39.83636098, 40.009918,39.94432271,39.91651225) 
longitude = c(-76.288572, -77.2300438, -77.2061907,-75.188196, -76.5933571, -77.1641403) 
mode = c('Bike','Bike','Bike','Car','Car','Car') 
test = data.frame(names,datetime,latitude,longitude,mode) 

Quelqu'un peut-il me aider ou de suggérer un moyen de tracer ce graphique?

Mise à jour:

Ce qui suit est mon essai,

library(ggplot2) 
library(ggmap) 

map <- get_map(location = c(lon = mean(test$longitude), lat = mean(test$latitude)), zoom = 4, maptype = "satellite", scale = 2) 

basicmap <- ggmap(map) 

basicmap + geom_path(data=test,aes(x=longitude, y=latitude, group=names, color=route),size=1) 

Mais je reçois,

Don't know how to automatically pick scale for object of type function. Defaulting to continuous 
Error in data.frame(x = c(-76.288572, -77.2300438, -77.2061907, -75.188196, : 
    arguments imply differing number of rows: 6, 0 

Merci

+0

@HubertL S'il vous plaît trouver la mise à jour – haimen

Répondre

1
names = c('A','A','A','B','B','B') 
datetime = c('2016-01-11 02:00:04 PST','2016-01-11 02:10:04 PST','2016-01-11 02:20:04 PST','2016-01-02 03:55:58 PST','2016-01-02 03:59:58 PST','2016-01-02 04:10:58 PST') 
latitude = c(40.07054,39.82271579,39.83636098, 40.009918,39.94432271,39.91651225) 
longitude = c(-76.288572, -77.2300438, -77.2061907,-75.188196, -76.5933571, -77.1641403) 
mode = c('Bike','Bike','Bike','Car','Car','Car') 
test = data.frame(names,datetime,latitude,longitude,mode) 

library("ggmap") 
m <- get_map(location=c(lon=median(test$longitude), lat=median(test$latitude)), zoom=8) 
ggmap(m) + geom_point(aes(x=longitude, y=latitude, color=mode), data=test) + 
    geom_line(aes(x=longitude, y=latitude, color=mode), data=test) 

Ce produit: enter image description here

Passez un peu de temps à modifier les couleurs, les axes et d'autres éléments pour rendre ceci plus présentable, mais cela devrait vous aider à démarrer.

+0

Merci beaucoup .. Cela fonctionne. Puis-je également demander un moyen d'afficher l'heure à laquelle chaque emplacement a été atteint? J'ai la variable datetime et je voudrais que cela s'affiche dans chaque point de repère – haimen

+0

Peut-être modifier la taille de 'geom_point' ... le temps passé à cet endroit est plus long? – cory

+0

Pouvons-nous l'afficher comme un texte dans chaque point? J'essaie de faire ça. Mais ayant des difficultés à le faire. – haimen