Gracias Emilio y Jorge. Tengo que explicarlo mejor. Mostrando a una audiencia cómo hacer un tipo de análisis, se hace un loop (abajo) que analiza un mapa por regiones longitudinales. Tal y como está el script, print(i) te indica la longitud por la que va (de 10º en 10º) pero me gustaría que en vez de eso te fuese representando una línea vertical sobre el mapa, que he representado previamente con ggplot. No es imprescindible, pero quedaría bien. Preds <- data.frame() 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") print(i) prd <- predict(fitrp, testdata, type="class") # se aplica el modelo a las muestras test testdata$prd<-prd Preds<-rbind(Preds,testdata) } El vie., 5 jun. 2020 a las 16:18, Emilio L. Cano (<emilopezcano en gmail.com>) escribió:> Hola Manuel, > Al ser ggplot supongo que será como en cualquier gráfico en ejes > coordenados, añade una capa: > > ggplot(?..) + geom_vline(xintercept = vector_de_valores_x) > > Un saludo, > > Emilio L. Cano > http://emilio.lcano.com > > > > > El 5 jun 2020, a las 13:48, Manuel Mendoza <mmendoza en fulbrightmail.org> > escribió: > > > > Buenos días ¿sabéis si hay alguna forma de añadir una recta vertical > sobre > > un mapa hecho previamente con ggplot? Lo que hago ahora es cargar > > nuevamente el mapa con la línea añadida (una serie de líneas añadidas > > secuencialmente en un loop) pero me gustaría que añadiese las líneas sin > > cargar nuevamente el mapa. > > Gracias, > > Manuel > > > > [[alternative HTML version deleted]] > > > > _______________________________________________ > > R-help-es mailing list > > R-help-es en r-project.org > > https://stat.ethz.ch/mailman/listinfo/r-help-es > >[[alternative HTML version deleted]]
Hola, Como ggplot son gráficos tipo ?grid? seguramente puedas añadir las líneas como un objeto ?grob? sin tener que recargar el mapa. Con un ejemplo reproducible lo podría confirmar. Un saludo, Emilio L. Cano http://emilio.lcano.com> El 5 jun 2020, a las 17:48, Manuel Mendoza <mmendoza en fulbrightmail.org> escribió: > > Gracias Emilio y Jorge. Tengo que explicarlo mejor. Mostrando a una audiencia cómo hacer un tipo de análisis, se hace un loop (abajo) que analiza un mapa por regiones longitudinales. Tal y como está el script, print(i) te indica la longitud por la que va (de 10º en 10º) pero me gustaría que en vez de eso te fuese representando una línea vertical sobre el mapa, que he representado previamente con ggplot. No es imprescindible, pero quedaría bien. > > Preds <- data.frame() > > 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") > print(i) > > prd <- predict(fitrp, testdata, type="class") # se aplica el modelo a las muestras test > testdata$prd<-prd > Preds<-rbind(Preds,testdata) > } > > El vie., 5 jun. 2020 a las 16:18, Emilio L. Cano (<emilopezcano en gmail.com <mailto:emilopezcano en gmail.com>>) escribió: > Hola Manuel, > Al ser ggplot supongo que será como en cualquier gráfico en ejes coordenados, añade una capa: > > ggplot(?..) + geom_vline(xintercept = vector_de_valores_x) > > Un saludo, > > Emilio L. Cano > http://emilio.lcano.com <http://emilio.lcano.com/> > > > > > El 5 jun 2020, a las 13:48, Manuel Mendoza <mmendoza en fulbrightmail.org <mailto:mmendoza en fulbrightmail.org>> escribió: > > > > Buenos días ¿sabéis si hay alguna forma de añadir una recta vertical sobre > > un mapa hecho previamente con ggplot? Lo que hago ahora es cargar > > nuevamente el mapa con la línea añadida (una serie de líneas añadidas > > secuencialmente en un loop) pero me gustaría que añadiese las líneas sin > > cargar nuevamente el mapa. > > Gracias, > > Manuel > > > > [[alternative HTML version deleted]] > > > > _______________________________________________ > > R-help-es mailing list > > R-help-es en r-project.org <mailto:R-help-es en r-project.org> > > https://stat.ethz.ch/mailman/listinfo/r-help-es <https://stat.ethz.ch/mailman/listinfo/r-help-es> >[[alternative HTML version deleted]]
Estimado Si no comprendo mal, una idea media loca. Entendí que es un mapa, algo geográfico, pues si es así se podría colocar el valor de algo de análisis como si fuese la altura de las montañas. Javier Marcuzzi El sáb., 6 jun. 2020 a las 7:02, Emilio L. Cano (<emilopezcano en gmail.com>) escribió:> Hola, > > Como ggplot son gráficos tipo ?grid? seguramente puedas añadir las líneas > como un objeto ?grob? sin tener que recargar el mapa. > > Con un ejemplo reproducible lo podría confirmar. > > Un saludo, > > Emilio L. Cano > http://emilio.lcano.com > > > > > El 5 jun 2020, a las 17:48, Manuel Mendoza <mmendoza en fulbrightmail.org> > escribió: > > > > Gracias Emilio y Jorge. Tengo que explicarlo mejor. Mostrando a una > audiencia cómo hacer un tipo de análisis, se hace un loop (abajo) que > analiza un mapa por regiones longitudinales. Tal y como está el script, > print(i) te indica la longitud por la que va (de 10º en 10º) pero me > gustaría que en vez de eso te fuese representando una línea vertical sobre > el mapa, que he representado previamente con ggplot. No es imprescindible, > pero quedaría bien. > > > > Preds <- data.frame() > > > > 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") > > print(i) > > > > prd <- predict(fitrp, testdata, type="class") # se aplica el modelo a > las muestras test > > testdata$prd<-prd > > Preds<-rbind(Preds,testdata) > > } > > > > El vie., 5 jun. 2020 a las 16:18, Emilio L. Cano (< > emilopezcano en gmail.com <mailto:emilopezcano en gmail.com>>) escribió: > > Hola Manuel, > > Al ser ggplot supongo que será como en cualquier gráfico en ejes > coordenados, añade una capa: > > > > ggplot(?..) + geom_vline(xintercept = vector_de_valores_x) > > > > Un saludo, > > > > Emilio L. Cano > > http://emilio.lcano.com <http://emilio.lcano.com/> > > > > > > > > > El 5 jun 2020, a las 13:48, Manuel Mendoza <mmendoza en fulbrightmail.org > <mailto:mmendoza en fulbrightmail.org>> escribió: > > > > > > Buenos días ¿sabéis si hay alguna forma de añadir una recta vertical > sobre > > > un mapa hecho previamente con ggplot? Lo que hago ahora es cargar > > > nuevamente el mapa con la línea añadida (una serie de líneas añadidas > > > secuencialmente en un loop) pero me gustaría que añadiese las líneas > sin > > > cargar nuevamente el mapa. > > > Gracias, > > > Manuel > > > > > > [[alternative HTML version deleted]] > > > > > > _______________________________________________ > > > R-help-es mailing list > > > R-help-es en r-project.org <mailto:R-help-es en r-project.org> > > > https://stat.ethz.ch/mailman/listinfo/r-help-es < > https://stat.ethz.ch/mailman/listinfo/r-help-es> > > > > > [[alternative HTML version deleted]] > > _______________________________________________ > R-help-es mailing list > R-help-es en r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es >[[alternative HTML version deleted]]
Gracias Emilio, no sé cómo ponerte un ejemplo reproducible. El mapa es un ggplot como el que te pongo abajo, y el análisis que se hace en cada vuelta del loop (que tienes abajo, del anterior email) es un árbol de clasificación que se entrena con una parte del mapa, dada por la longitud (lon), y se testa con la otra. Los resultados se almacenan en Preds. Como puedes ver, la i del loop/for determina lon, una de las variables de la base de datos del mapa, y a cada iteración del loop (valor de lon) me indica por qué valor va (print(i)). En vez de eso, o además de, me gustaría que me representase un linea sobre el mapa que se hizo previamente con ggplot, que se corresponda con el valor de lon. Este es el mapa (sigo abajo): world<-map_data('world') pyt<- ggplot(data, aes(x = longitud, y = latitud, color ptyrup,size=ptyrup)) + geom_point()+ scale_color_manual(values = c('lightslateblue','black')) + scale_size_manual(values=c(1,2))+ theme(legend.position="top") windows();pyt Si en el loop incluyo esto: pyt<-pyt+geom_vline(xintercept = i) print(pyt) a cada iteración me representa en el mapa la línea que yo quiero, pero lo hace representando el mapa de nuevo cada vez. La idea es que me añada la línea, cada vez, pero sin tener que representar el mapa, es decir, sobre el que ya estaba. Es por el efecto visual. Parece una tontería, pero frente a una audiencia esos detalles importan (hasta cierto punto). Gracias, Manuel El sáb., 6 jun. 2020 a las 12:01, Emilio L. Cano (<emilopezcano en gmail.com>) escribió:> Hola, > > Como ggplot son gráficos tipo ?grid? seguramente puedas añadir las líneas > como un objeto ?grob? sin tener que recargar el mapa. > > Con un ejemplo reproducible lo podría confirmar. > > Un saludo, > > Emilio L. Cano > http://emilio.lcano.com > > > > El 5 jun 2020, a las 17:48, Manuel Mendoza <mmendoza en fulbrightmail.org> > escribió: > > Gracias Emilio y Jorge. Tengo que explicarlo mejor. Mostrando a una > audiencia cómo hacer un tipo de análisis, se hace un loop (abajo) que > analiza un mapa por regiones longitudinales. Tal y como está el script, > print(i) te indica la longitud por la que va (de 10º en 10º) pero me > gustaría que en vez de eso te fuese representando una línea vertical sobre > el mapa, que he representado previamente con ggplot. No es imprescindible, > pero quedaría bien. > > Preds <- data.frame() > > 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") > print(i) > > prd <- predict(fitrp, testdata, type="class") # se aplica el modelo a > las muestras test > testdata$prd<-prd > Preds<-rbind(Preds,testdata) > } > > El vie., 5 jun. 2020 a las 16:18, Emilio L. Cano (<emilopezcano en gmail.com>) > escribió: > >> Hola Manuel, >> Al ser ggplot supongo que será como en cualquier gráfico en ejes >> coordenados, añade una capa: >> >> ggplot(?..) + geom_vline(xintercept = vector_de_valores_x) >> >> Un saludo, >> >> Emilio L. Cano >> http://emilio.lcano.com >> >> >> >> > El 5 jun 2020, a las 13:48, Manuel Mendoza <mmendoza en fulbrightmail.org> >> escribió: >> > >> > Buenos días ¿sabéis si hay alguna forma de añadir una recta vertical >> sobre >> > un mapa hecho previamente con ggplot? Lo que hago ahora es cargar >> > nuevamente el mapa con la línea añadida (una serie de líneas añadidas >> > secuencialmente en un loop) pero me gustaría que añadiese las líneas sin >> > cargar nuevamente el mapa. >> > Gracias, >> > Manuel >> > >> > [[alternative HTML version deleted]] >> > >> > _______________________________________________ >> > R-help-es mailing list >> > R-help-es en r-project.org >> > https://stat.ethz.ch/mailman/listinfo/r-help-es >> >> >[[alternative HTML version deleted]]