豊田秀樹編『データマイニング入門』第9章 p.277のバイプロット 以下でほぼ同じグラフができるでしょう.
>(TD <- matrix(c(0, 0, 2, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1), ncol = 4, byrow = TRUE))
> colnames(TD) <- c("病院","医院","クリニック","少年") > rownames(TD) <- c("医師","医療","病気","患者","診察", "治療","収容","施設","矯正","送致","裁判") > TD.svd <- svd(TD) > TD.svd$u > TD2 <- TD.svd$u[, 1:2] %*% diag(TD.svd$d[1:2]) %*% t(TD.svd$v[,1:2] ) > # 本当は min() と max() を使って調整すべき > plot(c(-2.8, .6), c(-0.6, 3.2), type = "n") > text(TD.svd$u[, 1:2]%*% diag(TD.svd$d[1:2]), rownames(TD)) > text( t( diag(TD.svd$d[1:2]) %*% t(TD.svd$v[, 1:2])) , colnames(TD2) ) > # # # # # lsa パッケージを使うなら > TD2 <- lsa(TD) > plot(c(-2.8, .6), c(-0.6, 3.2), type = "n") > text(TD2$tk %*% diag(TD2$sk), rownames(TD2$tk) ) > text( t(diag(TD2$sk) %*% t(TD2$dk)) , rownames(TD2$dk) )