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