Hello. Sorry I'm not "Dr."
Here is my Non-Contiguous Area-based "Shrinking" Cartogram script for maptools. This script doesn't support multi-parts polygon shape. Please try this. ############### require(maptools) # # Non Contiguous Area-based Cartogram # createNonContiguousAreaBasedCartogram<-function(mapObj,targetAttribute,areaAttribute){ densities<- sqrt(targetAttribute/areaAttribute) # calclulate given attribute value maxDensity<-max(densities) # get Maximum of densities k <- 1/maxDensity L <- k * densities centroidXY<-get.Pcent(mapObj) # get polygons' centroids mapObj2 <- mapObj[[1]] for(i in 1:length(mapObj2)){ if(mapObj2[[i]]$nParts == 1){ coords <- mapObj2[[i]]$verts newX<-L[i] * (coords[,1] - centroidXY[i,1]) + centroidXY[i,1] # new X coordinate newY<-L[i] * (coords[,2] - centroidXY[i,2]) + centroidXY[i,2] # new Y coordinate polygon(newX,newY,col="red") #draw polygon } } } columbus<-read.shape(system.file("shapes/columbus.shp",package="maptools")) #load polygon shape file plot(columbus) createNonContiguousAreaBasedCartogram(columbus,columbus$att.data$CRIME,columbus$att.data$AREA) > In the days when I had more time to work on this > stuff I looked into > programming continuous cartograms for maptools. There are lots of arcscripts for contiguous codes in following ESRI's arcscripts site. http://arcscripts.esri.com/scripts.asp?eLang=&eProd=&perPage=10&eQuery=contiguous&Submit2=Search GeoDa(which will be opnssource) can display Doring's circular cartogram which use Cellular Automata for good performance.(https://geoda.uiuc.edu/pdf/geoda095i.pdf). Some Japanese GIS researcher has tried to employ some optimisation method for Doring's and Contiguous one. Regards. _______________________________________________ R-sig-Geo mailing list R-sig-Geo@stat.math.ethz.ch https://stat.ethz.ch/mailman/listinfo/r-sig-geo