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
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
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
Hola, Lo hice de la forma en que propones y no me sale, no sé si algo esté mal con R, porque no me respeta ni el ?key.space?, me lo sigue poniendo en la parte izquierda del gráfico Saludos El 06/05/2014, a las 02: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 > > > ____________________________________ > > >Rolando Valdez