# ------------- [ rectangular_graph.R ] --------------- # m行×n列の頻度表データに基づき、帯グラフを描画する # 数値(列パーセント)を各セルの中央に記載する # rectangular_graph( freq.table ) # by Kaoru Fukuda, on Dec. 25, 2012 # ----------------------------------------------------- rectangular_graph <- function( freq.table ) { prop.tab <- prop.table( freq.table, 2 )*100 # 列パーセント m = nrow( freq.table ) n = ncol( freq.table ) colors <- vector() for ( i in 1:m ) { colors[i] <- paste( "grey",100 - 10*(i-1) ) } mids <- barplot( prop.tab, horiz=TRUE, space=0.7, col=colors, axes=FALSE ) # 帯グラフ内に列パーセント数値を記載する for ( i in 1:n ) { start=0 for ( j in 1:m ) { y = mids[i] string = as.character( round( prop.tab[j, i], 0 ) ) if ( j == m ) { x = (start+100)/2 } else { end = start + prop.tab[j,i] x = ( start + end )/2 start = end } if ( as.numeric(string) >= 5 ) { text( x, y, string ) } } } }