[R] pyramid.plot: x-axis scale

ws webb.sprague at gmail.com
Thu Jul 30 01:21:30 CEST 2009


Hi R-ers

Does anyone know how if there is a way to force pyramid plot where 
you determine the bottom axis range?  I want to compare many 
different pyramids, so I am hoping to force the bottom axis range
from 0% to 10%.

Here is the code so far, if it matters:

mk.pyr = function(data, pumas=NULL, fb.class=NULL, info="") {
	# Makes population pyramids
	# Assumes certain columns names in data -- SEX, AGEF, PUMA

	males.i = data$SEX==1
	females.i = data$SEX==1

	if (is.null(pumas)) {
		xy.pop = 100*as.double(prop.table(xtabs(pwgtp~AGEF, 
data[males.i,])))
      	xx.pop = 100*as.double(prop.table(xtabs(pwgtp~AGEF, 
                  data[females.i,])))
		 mytitle = sprintf("Population Pyramid for all pumas. %s.", 
info)

	} else {
		pumas.i = data$PUMA %in% pumas
		xy.pop = 100*as.double(prop.table(
                           xtabs(pwgtp~AGEF, data[males.i & pumas.i,])))
      	xx.pop = 100*as.double(prop.table(
                           xtabs(pwgtp~AGEF, data[females.i & pumas.i ,])))
		mytitle = sprintf("Population Pyramid for %s", 
                     paste(paste(pumas, collapse=", "), ".", info, "."))
	}
      agelabels<-c("0-4","5-9","10-14","15-19","20-24",
              "25-29","30-34","35-39","40-44","45-49",
              "50-54","55-59","60-64","65-69","70-74",
               "75-79","80-44","85+")
      xycol<-color.gradient(.5,.5,.5,18)
      xxcol<-color.gradient(.5,.5,.5,18)
      par(mar=pyramid.plot(xy.pop,xx.pop,labels=agelabels,
            main=mytitle,xycol=xycol,xxcol=xxcol))
}




More information about the R-help mailing list