[R-sig-Geo] Bubble plot from SpatialPolygons object

Muenchen, Robert A (Bob) muenchen at utk.edu
Tue Nov 2 13:15:46 CET 2010


That did it, thanks. Love your book!

Cheers,
Bob

>-----Original Message-----
>From: r-sig-geo-bounces at stat.math.ethz.ch [mailto:r-sig-geo-
>bounces at stat.math.ethz.ch] On Behalf Of Edzer Pebesma
>Sent: Tuesday, November 02, 2010 3:05 AM
>To: r-sig-geo at stat.math.ethz.ch
>Subject: Re: [R-sig-Geo] Bubble plot from SpatialPolygons object
>
>
>
>On 11/01/2010 09:53 PM, Muenchen, Robert A (Bob) wrote:
>> Hi All,
>>
>> I'm having great fun learning the vast array of mapping options in R.
>I'm now working on a teaching example (below) that will step slowly
>through creating a tiny map, converting it to  SpatialPolygons and then
>plotting a choropleth and bubble plots in several ways (to be simplified
>to just one way when I'm done learning.)
>>
>> The first place I'm stuck is getting a legend to handle both size and
>color at the same time on the bubble plot (2nd from bottom). Either one
>works by itself, but not both together.
>>
>> My second problem is using plot twice with "add=TRUE" (bottom
>example). When I run the book example though it works fine, so I've got
>to be doing something truly inane.
>>
>> Finally, I'm plotting the bubbles in the centers of the regions that I
>entered into a dataframe. That seems silly since these are created
>automatically when I convert from a map object to a SpatialPolygons
>object, and stored in the labpt slots. There must be an easy way to call
>them from there, but I haven't figured it out.
>>
>> Thanks!
>> Bob
>>
>> Here's what I've got so far:
>>
>> #----------------------------------------
>> # Create a "map" class object of Tinyland
>> #----------------------------------------
>> long <- c(
>> 20, 25, 32, 30, 27, 18, 20, NA,
>> 35, 42, 42, 32, 25, 29, 35, NA,
>> 30, 35, 35, 29, 25, 20, 20, 24, 30)
>> lat <- c(
>> 30, 30, 35, 39, 39, 34, 30, NA,
>> 21, 25, 33, 35, 30, 23, 21, NA,
>> 18, 18, 21, 23, 30, 30, 25, 20, 18)
>> range <- c(18, 42, 18, 39)
>> names=c("A","B","C")
>> TinylandMap <- list(
>>   x=long,
>>   y=lat,
>>   names=names,
>>   range=range)
>> class(TinylandMap) <- "map"
>>
>> TinylandMap
>> map(TinylandMap)
>>
>> # Now convert it to a SpatialPolygon object
>>
>> library("maptools")
>> TinylandSP <- map2SpatialPolygons( TinylandMap,
>>   IDs=TinylandMap$names,
>>   proj4string=CRS("+proj=longlat +ellps=WGS84") )
>> str(TinylandSP, max.level=2)
>> plot(TinylandSP)
>>
>> # Create some "pop"ulation data
>> region <- c("A","B","C")
>> pop <- c(271828, 314159, 195996)
>> labptX <- c(25,34,26) #X-value of center of each region
>> labptY <- c(34,28,23) #Y-value of center of each region
>> myPopData <- data.frame(region,labptX,labptY,pop)
>> myPopData
>>
>> # Get some grey shades
>> # could automate this: myGreys <- grey( (1-( pop / max(pop) ) ) )
>> # but these look nicer:
>> myGreys <- c("gray60","gray30","gray90")
>> myGreys
>>
>> # Choroploth plot from SpatialPolygons
>> plot(TinylandSP, col = myGreys  )
>> legend( 37, 38 ,
>>   pop,
>>   fill = myGreys  )
>> text( 37, 38.5, pos=4, "pop")
>>
>> # Create some Character EXpansion values
>> myCexValues <- 5*pop/max(pop)
>>
>> # This works and has a nice legend:
>> library(PBSmapping)
>> plot(TinylandSP)
>> addBubbles(labptX, labptY, pop,
>>   legend.type="nested", col="grey")
>>
>> # This almost works but legend bubbles are not black
>> # and overlap quite a bit. Is the legend function
>> # capable of making the points black?
>>
>> plot(TinylandSP)
>> symbols(labptX, labptY, circles=pop, inches=1/5, bg="black", add=TRUE)
>> legend( 37, 38, legend=pop,
>>   pch=1, pt.cex=myCexValues)
>
>use
>
>pch = 16, y.intersp=2
>
>in the legend command.
>
>> # Here I'm trying to follow the example from
>> # Applied Spatial Data Analysis with R
>> # page 67 bottom by using plot twice.
>> # But the 2nd plot says "add is not a graphical parameter"
>> # so the bubbles start over on a blank map
>> # I'm also trying fill="black" in the legend & getting squares
>>
>> plot(TinylandSP)
>> plot( labptX, labptY, pch=1, bg="black", cex=myCexValues, add=TRUE )
>> legend( "topright", legend=pop,
>>   pch=1, pt.cex=myCexValues, fill="black")
>
>instead of the second plot, use:
>
>points(labptX, labptY, pch=1, bg="black", cex=myCexValues)
>>
>> =========================================================
>>   Bob Muenchen (pronounced Min'-chen), Manager
>>   Research Computing Support
>>   Voice: (865) 974-5230
>>   Email: muenchen at utk.edu
>>   Web:   http://oit.utk.edu/research,
>>   News:  http://oit.utk.edu/research/news.php
>> ========================================================
>>
>> _______________________________________________
>> R-sig-Geo mailing list
>> R-sig-Geo at stat.math.ethz.ch
>> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>
>--
>Edzer Pebesma
>Institute for Geoinformatics (ifgi), University of Münster
>Weseler Straße 253, 48151 Münster, Germany. Phone: +49 251
>8333081, Fax: +49 251 8339763  http://ifgi.uni-muenster.de
>http://www.52north.org/geostatistics      e.pebesma at wwu.de
>
>_______________________________________________
>R-sig-Geo mailing list
>R-sig-Geo at stat.math.ethz.ch
>https://stat.ethz.ch/mailman/listinfo/r-sig-geo



More information about the R-sig-Geo mailing list