2014-11-17 2 views
4

Я ищу, чтобы повернуть вид в объекте ggmap по умолчанию: up = true north, до настраиваемого угла по моему выбору, но не могу найти параметр в ggmap или get_map. В настоящее время, у меня есть следующий код:Как вы поворачиваете представление карты в ggmap?

map1 <- get_map(location=c(-78.872209, 35.050514), zoom = 17, maptype="hybrid") 
ggmap(map1) 

Который производит: enter image description here

Я хотел бы, чтобы повернуть изображение так, чтобы главная улица показано (Person Street) является вертикально выровнены, как это (который Я просто повернут вручную в программном обеспечении ScreenCapture):

enter image description here

Моя цель, конечно, по-прежнему имеют горизонтальные и вертикальные оси х и у, как исходное изображение, бу t иметь фактический «видовой экран».

+0

Я не знаю, как сделать это в GoogleMaps. Вы? Существуют маскирующие функции в базе R. Возможно, возьмите большее изображение и маску? –

+0

Я пробовал некоторые идеи. Но пока не удалось. [Этот пост] (http://r.789695.n4.nabble.com/gridExtra-with-cairodevie-and-ggplots-td3597765.html), вероятно, содержит полезную информацию. Вы можете повернуть объект ggplot. Когда вы загружаете карту с помощью ggmap, у вас есть gg/растровый объект. Я использую rasterGrob и вижу, могу ли я сделать это прямо сейчас. – jazzurro

+0

Я не хочу поворачивать весь объект ggplot, но видовой экран внутри карты, то есть моя северная стрелка по умолчанию не указывает вверх. – AndMan21

ответ

2

Нарисуйте карту в повернутом (и увеличенном размере) видовом экране, но поверните метки в противоположном направлении. Положение (hjust, vjust) меток lon требует небольшой корректировки. Если угол поворота не слишком большой, регулировка в порядке.

library(ggmap) 
library(grid) 

# Get the map 
lon <- c(165, 180) 
lat <- c(-47.5, -33.5) 
map1 <- get_map(location = c(-78.872209, 35.050514), zoom = 17, maptype = "hybrid") 

# Angle of rotation 
rotate = -67 

# Rotate the labels in the opposite direction, 
# plus an adjustment of the position of the tick mark labels 
map = ggmap(map1) + 
     theme(axis.text.x = element_text(angle= -rotate, 
          vjust = 1.1, hjust = ifelse(rotate > 0, 0, 1)), 
      axis.text.y = element_text(angle = -rotate), 
      axis.title.y = element_text(angle = -rotate, vjust = 0.5), 
      axis.title.x = element_text(angle = -rotate)) 

# Draw the map in a rotated viewport, with its size adjusted 
print(map, vp = viewport(width = .7, height = .7, angle = rotate)) 

enter image description here

Смежные вопросы