[R-es] Mapa de quantiles con spplot

Rolando Valdez rvaldezr en gmail.com
Mie Mayo 7 06:12:24 CEST 2014


Hola,

Primero que nada, muchas gracias por tu tiempo y por tu ayuda.

Primero probé con la opción sencilla y rápida, obteniendo un resultado algo extraño. Lo muestro en el siguiente link:

https://www.dropbox.com/s/xujqcz0o9kqfrku/intervals.tiff

Después intenté ir replicando el resto de pasos que me propones y al llegar al momento de definir una nueva variable categórica, me arroja el siguiente error:

> zm$classP88 <- factor(intChar[idxP88])
Error in `[[<-.data.frame`(`*tmp*`, name, value = integer(0)) : 
  replacement has 0 rows, data has 56

¿A qué se debe este error?

Reitero mi agradecimiento

El 06/05/2014, a las 06:31, Oscar Perpiñan <oscar.perpinan en upm.es> escribió:

> Hola,
> 
> El problema con la propuesta de Olivier es que los intervalos son
> diferentes para cada variable.
> 
> La forma sencilla y rápida es:
> 
> spplot(zm["part88"], col.regions=plotclr, at=class$brks)
> 
> Pero para que quede más elegante hay que dar algunos pasos más:
> 
> ## Intervalos en forma character
> op <- options(digits=4)
> tab <- print(class)
> options(op)
> intChar <- names(tab)
> ## Indice de correspondencia entre elemento e intervalo
> idxP88 <- findCols(class)
> ## Es sólo un wrapper alrededor de findIntervals. Lo anterior para
> otra variable es:
> idxP93 <- findInterval(zm$part93, class$brks, all.inside = TRUE)
> 
> ## Nueva variable categórica
> zm$classP88 <- factor(intChar[idxP88])
> zm$classP93 <- factor(intChar[idxP93])
> 
> ## A pintar
> spplot(zm[c("classP88", "classP93")], col.regions=plotclr)
> 
> Saludos.
> 
> Oscar.
> -----------------------------------------------------------------
> Oscar Perpiñán Lamigueiro
> Dpto. Ingeniería Eléctrica (ETSIDI-UPM)
> Grupo de Sistemas Fotovoltaicos (IES-UPM)
> URL: http://oscarperpinan.github.io
> Twitter: @oscarperpinan
> 
> 
> El día 6 de mayo de 2014, 9:21, "Olivier Nuñez" <onunez en unex.es> escribió:
>> El segundo argumento en spplot ha de definir el número/nombre del intervalo al que
>> pertenece el area a pintar.
>> Este código debería funcionar:
>> 
>> zm$class88=findCols(classIntervals(zm$part88, nclr, style="quantile"))
>> zm$class93=findCols(classIntervals(zm$part93, nclr, style="quantile"))
>> 
>> spplot(zm, c("class88","class93"), col.regions=plotclr, cuts=(nclr-1),
>> key.space="bottom")
>> 
>> Un saludo. Olivier
>> 
>>> Hola, no me funciona:
>>> 
>>> Te contesto lo mismo que le contesté a otro compañero de la lista, espero ser más
>>> claro.
>>> 
>>> Les comparto la carpeta con la capa y los datos que estoy usando.
>>> 
>>> https://www.dropbox.com/s/umy0evt3qm1wr4d/dissolve.zip
>>> 
>>> Esto es lo que estoy haciendo:
>>> 
>>> library(rgdal)
>>> library(maptools)
>>> library(sp)
>>> library(classInt)
>>> library(RColorBrewer)
>>> zm <- readOGR(“.”, “zmdis”)
>>> data <- read.csv(“part_pot.csv”, header=T, sep=“,”, dec=“.”)
>>> zm en data=data.frame(data)
>>> plotvar88 <- zm$part88
>>> nclr <- 8
>>> plotclr <- brewer.pal(nclr, “Blues”)
>>> class <- classIntervals(plotvar88, nclr, style=“quantile”)
>>> colcode <- findColours(class, plotclr)
>>> plot(zm)
>>> plot(zm, col=colcode, add=T)
>>> legend(3777189,2249615, legend=names(attar(colcode, “table”)), fill=attr(colcode,
>>> “palette”), cex=0.6, bty=“n”)
>>> 
>>> Entonces obtengo el mapa como lo quiero (Me falta la división política, pero para
>>> este ejemplo la omití):
>>> 
>>> https://www.dropbox.com/s/w3ps61o4jr1ciy5/part88.tiff
>>> 
>>> Cuando lo hago con spplot:
>>> 
>>> spplot(zm, "part88", col.regions=plotclr, cuts=nclr, key.space="bottom”)
>>> 
>>> Me regresa lo siguiente:
>>> 
>>> https://www.dropbox.com/s/2cgiua5ra2tx4a0/part88_spplot.tiff
>>> 
>>> Entonces lo que quiero es usar el spplot para pintar dos variables c(“part88”,
>>> “part93”), que el mismo ‘legend’ aplique para ambas.
>>> 
>>> Saludos cordiales
>>> El 05/05/2014, a las 10:39, Olivier Nuñez <onunez en unex.es> escribió:
>>> 
>>>> No resulta fácil contestarte con la información que proporcionas.
>>>> Sobre la base de las variables que definiste, intuyó que lo siguiente debería
>>>> funcionar:
>>>> 
>>>> zm$clases <- class
>>>> spplot(zm, "clases" , col.regions=plotclr)
>>>> 
>>>> Un saludo. Olivier
>>>> 
>>>>> Hola,
>>>>> 
>>>>> Intento representar en un mapa participaciones porcentuales de los sectores
>>>>> económicos y no logro hacerlo con spplot.
>>>>> 
>>>>> He intentado con spplot(zm, c(“part88”, “part93”), cuts=4,
>>>>> col.regions=brewer.pal(4,
>>>>> “Set3”))
>>>>> 
>>>>> Lo pude hacer utilizando el base graphics de R, definiendo:
>>>>> 
>>>>>> plotvar88 <- zm$part88
>>>>>> nclr <- 8
>>>>>> plotclr <- brewer.pal(nclr, "PuOr")
>>>>>> plotclr <- plotclr[nclr:1]
>>>>>> class <- classIntervals(plotvar88, nclr, style="quantile")
>>>>>> colcode <- findColours(class, plotclr)
>>>>>> plot(zm)
>>>>>> plot(zm, col=colcode, add=T)
>>>>>> legend(3377189,2249615, legend=names(attr(colcode, "table")), fill=attr(colcode,
>>>>>> "palette"), cex=0.6, bty="n”)
>>>>> 
>>>>> Después intenté meter algunos de esos argumentos utilizando spplot
>>>>> 
>>>>> spplot(zm, c(“part88”, “part93”), col.regions=plotclr, cuts=nclr)
>>>>> 
>>>>> y tampoco funcionó.
>>>>> 
>>>>> Tengo algunas nociones de cómo hacerlo en spplot, pero no sé cómo, pues
>>>>> desconozco
>>>>> la forma en utilizar los argumentos por ejemplo usando “cuts”, “at”. He revisado
>>>>> la
>>>>> ayuda que provee el paquete y sigo sin poder concretarlo.
>>>>> 
>>>>> Agradecería un poco de orientación.
>>>>> 
>>>>> Saludos cordiales.
>>>>> 
>>>>> Rolando Valdez
>>>>> 
>>>>> _______________________________________________
>>>>> R-help-es mailing list
>>>>> R-help-es en r-project.org
>>>>> https://stat.ethz.ch/mailman/listinfo/r-help-es
>>>>> 
>>>> 
>>>> 
>>>> --
>>>> ____________________________________
>>>> 
>>>> 
>>>> Olivier G. Nuñez
>>>> Email: onunez en unex.es
>>>> http://kolmogorov.unex.es/~onunez
>>>> Tel : +34 663 03 69 09
>>>> Departamento de Matemáticas
>>>> Universidad de Extremadura
>>>> 
>>>> 
>>>> ____________________________________
>>>> 
>>>> 
>>>> 
>>> 
>>> Rolando Valdez
>>> 
>>> 
>>> 
>>> 
>> 
>> 
>> --
>> ____________________________________
>> 
>> 
>> Olivier G. Nuñez
>> Email: onunez en unex.es
>> http://kolmogorov.unex.es/~onunez
>> Tel : +34 663 03 69 09
>> Departamento de Matemáticas
>> Universidad de Extremadura
>> 
>> _______________________________________________
>> R-help-es mailing list
>> R-help-es en r-project.org
>> https://stat.ethz.ch/mailman/listinfo/r-help-es

Rolando Valdez



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