2014-06-08 6 views
4

Je veux tracer des lignes (pour être précis: geom_segment élément) sur mon objet ggmap (qui est un objet ggplot2, si je comprends bien).Tracer geom_segment sur l'objet ggmap dans R-lignes n'apparaissant pas

J'utilise le code suivant:

library(ggmap) 

mapImageData <- get_map(location = c(lon = (16.8 + (17.2-16.8)/2), 
            lat = (51 + (51.2-51)/2)), 
         color = "color", 
         source = "google", 
         maptype = "roadmap", 
         zoom = 11) 

ggmap(mapImageData, extent = "device", ylab = "Latitude", xlab = "Longitude") + 
geom_segment(aes(x = 51, y = 16.8, xend = 51.2, yend = 17.2)) 

Une carte claire est en cours d'élaboration:

enter image description here

mais pas de ligne (de geom_segment) apparaît. Qu'est-ce que je fais mal?

Répondre

7

Les valeurs de latitudes correspondent aux valeurs y et aux valeurs de longitude à x. Vous devez donc modifier les valeurs x et y en geom_segment().

ggmap(mapImageData, extent = "device", ylab = "Latitude", xlab = "Longitude") + 
     geom_segment(aes(y = 51, x = 16.8, yend = 51.2, xend = 17.2)) 
+0

Alors stupide était ma question ... Merci! = D –

+0

Surtout, si quelqu'un a eu le même problème que moi, faites attention quand vous utilisez aes! Si vous spécifiez de nouvelles données (comme si vous vouliez tracer un segment indépendamment des données d'origine), vous avez besoin de aes(). C'est pourquoi ça ne fonctionnait pas pour moi. Merci pour cet exemple, vous avez résolu mon problème aussi! –

2

utiliser Sinon, vous pouvez également geom_path qui vous permettent de tracer plusieurs points GPS comme ligne:

gpsData <- read.csv("001.txt") 
    lonCenter <- mean(gpsData[[3]], na.rm = TRUE) 
    latCenter <- mean(gpsData[[4]], na.rm = TRUE) 

    map <- get_map(location = c(lon = lonCenter, lat = latCenter), zoom = 10) 

    dataFrame <- structure(
    list(
     taxiId = gpsData[[1]], 
     longitude = gpsData[[3]], 
     latitude = gpsData[[4]]  
    ), 
    .Names = c("id", "longitude", "latitude"), class = "data.frame" 
) 

    mapImage <- ggmap(map) + 
    geom_path(
     data = dataFrame, 
     aes(x = longitude, y = latitude, fill = "red", colour = "red", alpha = 1/3), 
     size = 3, shape = 21 
    ) + 
    guides(
     fill=FALSE, alpha=FALSE, size=FALSE, colour = FALSE 
    ) 

    ggsave(mapImage, filename = "001.png") 
Questions connexes