Skip to content

[R-es] añadir líneas verticales con ggplot

3 messages · Manuel Mendoza

#
Buenos días, hago un mapa con ggplot:

world<-map_data('world')

windows();ggplot(legend=FALSE) +
...
  geom_point(data=Data,aes(x=lon,y=lat,color=Clst),size=1.25) +

scale_color_manual(values=c("grey45","navy","skyblue","gold","green3","darkgreen"))
+
  geom_path( data=world, aes(x=long, y=lat,group=group)) +
  labs(title = "Trophic Patterns - Full Data")+
  guides(colour = guide_legend(override.aes = list(size=5)))

después hago un loop con for:

for (i in seq(from = -180, to = 170, by = 10)){
  traindata <- subset(Data, lon < i|lon>= i+10)
  testdata <- subset(Data,(lon> i & lon<= i+10))
  fitrp <- rpart(Clst ~ .- lon - lat, data=traindata,method = "class",
cp=cpopt)
  print(i)
  prd <- predict(fitrp, testdata, type="class") # se aplica el modelo a las
muestras test
  testdata$prd<-prd
  Preds<-rbind(Preds,testdata)
}

en vez de  print(i), que me indica por dónde va el loop,  me gustaría que
me fuera añadiera una línea vertical al mapa en la longitud (lon)  que
corresponde a i.

Muchas gracias por vuestra ayuda, como siempre,
Manuel
#
geom_point(aes(color = factor(ptyrup)))
windows(); pyt

dentro del loop incluyo:   pyt + geom_vline(xintercept = i), pero entonces
me borra la linea anterior, y lo que yo pretendo es que me vaya añadiendo
líneas sin borrar las anteriores. Con plot, en vez de ggplot era fácil
(abline(v=i)), pero por más que busco no encuentro la forma de hacer lo
mismo con ggplot, que el mapa queda mucho mejor.
Gracias,
Manuel

  
  
#
Creía haberlo solucionado con:

pyt<-ggplot(data, aes(x = longitud, y = latitud)) +
  geom_point(aes(color = factor(ptyrup)))
windows();pyt

e incluyendo en el loop:

  pyt<-pyt+
  geom_vline(xintercept = i)
  pyt

Pero no. Es extraño, pues sale bien si hago yo las iteraciones, una a una,
pero cuando hago el loop no dibuja las líneas ?.
geom_point(aes(color = factor(ptyrup)))
windows(); pyt

dentro del loop incluyo:   pyt + geom_vline(xintercept = i), pero entonces
me borra la linea anterior, y lo que yo pretendo es que me vaya añadiendo
líneas sin borrar las anteriores. Con plot, en vez de ggplot era fácil
(abline(v=i)), pero por más que busco no encuentro la forma de hacer lo
mismo con ggplot, que el mapa queda mucho mejor.
Gracias,
Manuel