[R-es] Mapa de quantiles con spplot

"Olivier Nuñez" onunez en unex.es
Mar Mayo 6 15:01:02 CEST 2014


Oscar tiene razón, con mi solución los dos mapas no son equiparables.
Un saludo. Olivier

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


--
____________________________________


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



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