2011-09-22 18 views
10

Amacım bir nehrin yolunu, nehrin yakınındaki önemli yerleri gösteren noktalarla çizmek.ggplot2 içinde farklı veri çerçevelerinden overplotting

Ben nehir veren iki veri çerçeveleri var ve site sırasıyla koordinatları: xlim ve İlim başabaş (yeni = T) ile, eski bir okul R arsa kullanma ve koruma

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)) 

, şöyle bir şey alacağı Bu:

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

Ama istiyorum ggplot2 kullanarak bunu yapmak için. Nehir ve puanları kolayca tek tek çağrılabilir:

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

önceki ikisinden aşağıdaki veri çerçevesini oluşturarak, dolandırıcı çalıştık:

> 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

Çalışır, ancak Bu yeni veri çerçevesini oluşturmak, eski par (new = T) yöntemi kadar basit değildir.

ggplot2'yi kullanarak tek tek veri çerçevelerinden üst üste gelmenin daha basit bir yolu var mı?

Teşekkürler!

+0

I uzamsal verileri, sp' paket 'de tanımlandığı gibidir, yani SpatialPoints ve SpatialLines işlemek için tasarlanmış sınıfları kullanmak yapmak için bir yöntemdir. –

+0

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

+1

@Kevin'in kopyası, tam olarak bir kopya değil, ancak Cevabı bulmak için bana yardımcı olduğu için teşekkürler. – susjoh

cevap

17

Burada

ggplot(samploc, aes(x = long, y = lat)) + 
    geom_point() + 
    geom_text(aes(label = site), vjust = 2) + 
    geom_line(data = river, aes(y = lat)) 
İlgili konular