Here is the S-PLUS code used to make this graph:
usa() symbols(census$x, census$y, circles=sqrt(census$Population),inches=0.05,col=2,add=T) text(census$x, census$y, paste("",census$AreaName), adj=0, cex=0.5,col=3) title("Racial distribution in US cities") java.set.page.title("USA map") java.set.page.tag("p0") java.identify(census$x, census$y, labels=census$fullname, actions=java.action.page(paste("p",1:length(census$x),sep=""))) cities <- census$fullname for(thecity in sort(cities)) { datum <- census[census$fullname==thecity,] grps <- c("Pct.white","Pct.black","Pct.amerind","Pct.asiapac","Pct.hisp") grp.eng <- c("White","Black","American Indian","Asian/Pacific","Hispanic") x <- unlist(datum[grps]) print(barchart(grp.eng ~ x,xlim=c(0,100),xlab="Percent",ylab="")) title(paste("Racial distribution in",thecity)) java.set.page.title(if(sum(census$AreaName==datum$AreaName)>1) {datum$fullname} else {datum$AreaName}) java.set.page.tag(paste("p", match(thecity, cities, nomatch=0), sep="", collapse="")) title(xlab="[Click here to return to USA Map]", adj=0.0) java.identify(y1=par("usr")[[3]], y2=par("usr")[[3]]-100, labels="return to map", actions=java.action.page("p0")) }