[R-es] líneas sobre un mapa

Manuel Mendoza mmendoz@ @end|ng |rom |u|br|ghtm@||@org
Sab Jun 6 20:40:29 CEST 2020


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 using 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 using 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 using 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 using 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 using r-project.org
>> > https://stat.ethz.ch/mailman/listinfo/r-help-es
>>
>>
>

	[[alternative HTML version deleted]]



Más información sobre la lista de distribución R-help-es