2011-09-22 8 views
10

내 목표는 강의 근처에 중요한 사이트를 나타내는 점으로 강의 경로를 플로팅하는 것입니다.ggplot2의 다른 데이터 프레임에서 오버 플로팅

나는 강을주는 두 개의 데이터 프레임을 가지고 사이트가 각각 좌표 xlim 및 ylim을 파 (새 = T)와 함께, 오래된 학교 R 플롯을 사용하고 보존

river<-data.frame(
    long=c(-2.816452494909265,-2.845487331898639,-2.883036393822358), 
    lat=c(56.38229290416972,56.36346886284386,56.36577994637793)) 

samploc<-data.frame(
    site=c("Site1","Site2","Site3"), 
    long=c(-2.826213585663894,-2.816519300644918,-2.868437228090127), 
    lat=c(56.3649482229089,56.38166100310631,56.36716019476281)) 

, 내가 좋아하는 뭔가를 얻을 것 이 :

old school plot http://users.utu.fi/susjoh/Riverplot.png

하지만 내가 좋아하는 것은 ggplot2를 사용하여 그것을 할 수 있습니다. 강 및 포인트는 쉽게 개별적으로 호출 할 수 있습니다

ggplot(river,aes(x=long,y=lat)) + geom_path() 
ggplot(samploc,aes(x=long,y=lat,lab=site)) + geom_point() + geom_text(vjust=2) 

나는 이전의 두에서 다음 데이터 프레임을 생성하여, 속임수를 시도했다 :

> rivsamp 
    river.long river.lat samp.site samp.long samp.lat 
1 -2.816452 56.38229  NA  NA  NA 
2 -2.845487 56.36347  NA  NA  NA 
3 -2.883036 56.36578  NA  NA  NA 
4   NA  NA  Site1 -2.826214 56.36495 
5   NA  NA  Site2 -2.816519 56.38166 
6   NA  NA  Site3 -2.868437 56.36716 

ggplot(rivsamp) + 
    geom_path(aes(x=river.long,y=river.lat)) + 
    geom_point(aes(x=samp.long,y=samp.lat)) + 
    geom_text(aes(x=samp.long,y=samp.lat,lab=samp.site),vjust=2) 

ggplot2 plot http://users.utu.fi/susjoh/riverggplot.png

그것은 작동을하지만, 이 새로운 데이터 프레임을 생성하는 것은 기존의 par (new = T) 메소드만큼 쉽지 않습니다.

ggplot2를 사용하여 개별 데이터 프레임에서 오버플로하는 간단한 방법이 있습니까?

감사합니다.

+0

나는 공간 데이터, sp' 패키지 '에 정의되어있다, 즉 SpatialPoints 및 SpatialLines을 처리 할 수 ​​있도록 설계 클래스를 사용하는 것이 한 가지 방법이다. –

+0

중복 된 http://stackoverflow.com/questions/7476022/geom-point-and-geom-line-for-multiple-datasets-on-same-graph-in-ggplot2 – kmm

+1

@Kevin, 정확한 복제본은 아니지만 게시 해 주셔서 감사 드리며 답변을 찾는데 도움이되었습니다. – susjoh

답변

17

여기가

ggplot(samploc, aes(x = long, y = lat)) + 
    geom_point() + 
    geom_text(aes(label = site), vjust = 2) + 
    geom_line(data = river, aes(y = lat)) 
관련 문제