実は同じことを去年もやっているんだけど、よく分からないコードで、しかもちゃんとしてないということで書きなおしてみた。
cross.table <- function(x,y){ t <- table(x,y) #回答の長さとかによって、marは変更して par(mar=c(6,6,6,3)) col <- 2:(length(levels(y))+1) barplot(t(t/apply(t,1,sum)) * 100, col=col,horiz=T,axes=F,las=2) par(xpd=TRUE) title(main=paste(deparse(substitute(x)),"と",deparse(substitute(y)),"のクロス表",sep="")) legend((par()$usr[1]+par()$usr[2])/2,par()$usr[3], legend=colnames(table(x,y)),col=col,lwd=5) axis(3) } library(MASS) attach(quine) n <- names(quine[-5]) par(ask=TRUE) apply(combn(n,2),2, function(x){ x1 <- x[1] x2 <- x[2] eval(parse(text=paste("cross.table(",x1,",",x2,")",sep=""))) })