이와 비슷한?
library(ggmap) # loads ggplot2 as well
library(RgoogleMaps) # for getGeoCode
london.center <- getGeoCode("London")
london <- get_map("London", zoom=12)
x <- seq(-2,2,0.1)
df <- expand.grid(x=x,y=x)
df$z <- with(df,f(x,y))
df$x <- london.center[2]+df$x/20
df$y <- london.center[1]+df$y/20
ggp <- ggmap(london)+
geom_tile(data=df,aes(x=x,y=y,fill=z), alpha=0.2)+
scale_fill_gradientn(guide="none",colours=rev(heat.colors(10)))+
stat_contour(data=df, aes(x=x, y=y, z=z, color=..level..), geom="path", size=1)+
scale_color_gradientn(colours=rev(heat.colors(10)))
plot(ggp)
ggplot
이 용액을 사용한다. 다른 사람이
RgoogleMaps
을 사용하여이 작업을 수행하는 방법을 알려줍니다.
기본적으로 get_map(...)
을 사용하여지도를로드합니다.이지도는 RgoogleMaps
패키지의 GetMap(...)
에 대한 래퍼입니다.
는 그 다음 세 개의 열, x
, y
및 z
, X 및 Y의 각 조합에 대해 하나의 행 (이 ggplot 의해 요구되는 형식)이 포함 된 샘플 데이터 프레임 df
를 생성한다.
그런 다음지도 레이어를 만듭니다. 먼저지도 자체를 사용하여 ggmap(...)
; 타일의 레이어는 geom_tile(...)
을 사용하여 z의 값을 기반으로 채워집니다. stat_contour(geom="path",...)
을 사용하여 z 값을 사용하여 등고선 세트를 채 웁니다. 나머지 코드는 채우기 및 선 색상을 설정하고지도를 렌더링합니다.
순수한 타일은 타일 대신에 stat_contour(geom="polygon",...)
을 사용하여 채워진 윤곽을 직접 렌더링 할 수 있다고 알려줄 것입니다. 그러나 이것은 플롯 영역에 완전히 포함되지 않은 윤곽선을 클리핑하는 불행한 효과가 있습니다.
방금 방금이 게시물을 발견하여 답변을 얻었습니다. 'x <- seq()와 df $ y <- london.center [1]'사이에 무엇을하고 있는지 설명해 주시겠습니까? 왜 -2와 2 사이의 시퀀스를 만드나요? ggplot 그래픽 영역 전체를 다루고 싶습니까? 'london.center [2] + df $ x/20'가 무엇을 의미하는지 알고 싶습니다. – jazzurro
@jazzurro - 함수'f (x, y)'는 OP의 질문에 정규 분포의 방사형 PDF로 정의됩니다. 한도 (-2,2)도 질문에서 나온 것입니다. OP가 어떤 데이터도 제공하지 않았기 때문에 London을 선택했습니다. 'zoom = 12'에서 런던에 대한 데이터를 얻는 것은 위도와 경도에서 대략 +/- 0.2도를 제공합니다 (지도에서 알 수 있듯이). 그래서 저는 OP의 질문에서 x와 y를 20으로 나누어 맵의 모든 것을 맞추기로했습니다. 런던의 중심을 추가하면 단순히 x 및 y 값을 변환합니다. – jlhoward
답장을 보내 주셔서 대단히 감사합니다. 나는 이제 당신이이 대답에서 무엇을하고 있는지 보았다. 건배. – jazzurro