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"))
}