Я хотел бы указать 2 разных маршрута на 1 карте. Это код, который я сделал в качестве примера:Построение нескольких линий на карте 1
### Plot 2 routes on 1 map
# libraries
library(ggmap)
library(ggplot2)
# plot map
basicmap <- get_map(location = c(lon = 3, lat = 50),
zoom = 12,
maptype = "roadmap",
source = "google",
color = "color") #completely random location
basicmap <- ggmap(basicmap)
# determine routes
routes <- data.frame(from = c("Rocquigny", "Nurlu"),
to = c("Heudicourt","Longavesnes"),
stringsAsFactors = FALSE)
# calculate routes
calculationroute <- function(startingpoint, stoppoint) {
route(from = startingpoint,
to = stoppoint,
mode = "bicycling",
structure = "route")
}
#this function calculates the route
calculatedroutes <- mapply(calculationroute,
startingpoint = routes$from,
stoppoint = routes$to,
SIMPLIFY = FALSE)
#calculate the 2 routes
# draw routes
drawroute <- function(route) {
geom_path(aes(data = route,
x = lon,
y = lat))
}
#this functions draws the route
extendedmap <- basicmap + lapply(X = calculatedroutes,
FUN = drawroute)
plot(extendedmap)
#draw the routes
Так тезисы шаги я принимаю:
- Фоновая карта создается
- Я делаю dataframe, содержащий исходные точки и конечные точки для 2 маршрута
- Использование ggmap Я вычисляю сегменты этих маршрутов.
- Я стараюсь рисовать маршруты на верхней части фона карты
К сожалению, последний шаг терпит неудачу, и эта ошибка:
Don't know how to automatically pick scale for object of type function. Defaulting to continuous
Error in data.frame(x = c(2.89030838012694, 3.11003494262694, 2.89030838012694, :
arguments imply differing number of rows: 4, 0
Я сделал поиск и this previous question хотел сделать то же самое , Решение, которое он, наконец, выбрал, использует цикл for, и я предпочел бы сохранить свой код в соответствии, используя вместо этого.
Цикл 'for' является прекрасным решением для этого, поскольку он добавляет геометрии в стандартном режиме для построения в ggplot. нет ничего плохого в использовании циклов 'for' в R и/или их смешивании с использованием идиомы' * apply'. – hrbrmstr