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
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
el mapa, que he representado previamente con ggplot. No es
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>)
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>
Buenos dÃas ¿sabéis si hay alguna forma de añadir una recta vertical
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
cargar nuevamente el mapa.
Gracias,
Manuel
[[alternative HTML version deleted]]