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

(사람 스트리트) 같이 메인 스트리트는 다음과 같이 수직으로 정렬되도록 나는 이미지를 회전하고 싶은

(이 난 그냥)는 screencapture 소프트웨어에서 수동으로 회전 :

enter image description here

내 목표는 물론, 여전히 원래 이미지로 수평 및 수직 x와 y 축을 가지고있다, BU 실제 "뷰포트"를 회전시킬 수 있습니다.

+0

나는 Google지도에 그렇게하는 방법을 모르겠어요. 너? 베이스 R에 마스킹 기능이 있습니다. 아마도 더 큰 이미지와 마스크를 잡을 것입니까? –

+0

나는 몇 가지 아이디어를 시도해 왔습니다. 그러나 아직 성공하지 못했습니다. [이 게시물] (http://r.789695.n4.nabble.com/gridExtra-with-cairodevie-and-ggplots-td3597765.html)에는 유용한 정보가있을 것입니다. ggplot 객체를 회전 할 수 있습니다. ggmap을 사용하여지도를 다운로드하면 gg/raster 객체가 생깁니다. 나는 rasterGrob를 사용하여 지금 만들 수 있는지 확인합니다. – jazzurro

+0

전체 ggplot 객체는 회전하지 않고지도 내의 뷰포트는 내 북쪽 화살표가 기본적으로 위로 향하는 것이 아니라는 것을 의미합니다. – AndMan21

답변

2

지도를 회전 된 (및 크기 조정 된) 뷰포트로 그려야하지만 반대 방향으로 레이블을 회전하십시오. lon 레이블의 위치 (hjust, vjust)는 약간의 조정이 필요합니다. 회전 각도가 너무 크지 않으면 조정은 괜찮습니다.

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

관련 문제