Mi objetivo es trazar la ruta de un río con puntos que indican sitios importantes cerca del río.Overplotting desde diferentes marcos de datos en ggplot2
Tengo dos tramas de datos, dando al río y sitio de coordenadas, respectivamente:
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))
Usando una vieja parcela escolar R, con el par (nuevo = T) y la conservación de xlim y ylim, me gustaría tener algo así como esto:
old school plot http://users.utu.fi/susjoh/Riverplot.png
Pero me gustaría hacerlo utilizando ggplot2. El río y los puntos se pueden llamar fácilmente de forma individual:
ggplot(river,aes(x=long,y=lat)) + geom_path()
ggplot(samploc,aes(x=long,y=lat,lab=site)) + geom_point() + geom_text(vjust=2)
me han tratado de engañar, mediante la creación de la siguiente trama de datos a partir de los dos anteriores:
> 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
funciona, pero crear este nuevo marco de datos no es tan sencillo como el antiguo método par (nuevo = T).
¿Hay una manera más simple de sobrerrrollar de los marcos de datos individuales usando ggplot2?
Gracias!
usaría clases diseñadas para manejar datos espaciales, a saber SpatialPoints y SpatialLines que se definen en el paquete 'sp'. –
Duplicado de http://stackoverflow.com/questions/7476022/geom-point-and-geom-line-for-multiple-datasets-on-same-graph-in-ggplot2 – kmm
@Kevin, no es un duplicado exacto, pero gracias por publicar, ya que me ayudó a encontrar la respuesta. – susjoh