[[Rの備忘録]] R で2種類のグラフィックスを作成するとする.片方にはカテゴリA, C, D があり,片方にはA, B, C があるとする.ここで両方に共通するカテゴリを同じ色と指定したい.もっとも簡単な方法は?もちろん,手作業でアドホックに処理するのはなしで. #ref(colorPlot.png) 思い出さないなぁ. もっと簡単な方法があったはずだが,とりあえず,こんな方法でも実現できる. まず二つの組に登場するカテゴリを一緒くたにしてベクトル z として扱い,それぞれの組のカテゴリ x, y が,この共通ベクトル z の何番目にあるかを調べるという方策である. x <- c("A","C", "D") y <- c("A","B","C") z <- unique(c(x,y)) #y の各要素がzの何番目にあるか知りたい y %in% z #意味無し # 添字番号を取るためにループする?こんな厄介な処理が必要なのかなぁ? xcol <- NULL ycol <- NULL for( i in 1:length(x)){ for(j in 1:length(z)){ if(x[i] == z[j]){ cat(j, "\n") xcol <- c(xcol, j) } } } for( i in 1:length(y)){ for(j in 1:length(z)){ if(y[i] == z[j]){ cat(j, "\n") ycol <- c(ycol, j) } } } xx <- sample(x, 100, rep = T) xx.n <- sample(1:5, 100, rep = T) xx.l <- sample(x,100, rep = T) yy <- sample(y,100, rep = T) yy.n <- sample(1:5, 100, rep = T) yy.l <- sample(y,100, rep = T) par(mfrow = c(1,2)) matplot(prop.table(table(xx.n, xx.l)), type = "l", col = xcol, lwd = 3) legend(1,.1, legend = x, col = xcol, lwd = 3) matplot(prop.table(table(yy.n, yy.l)), type = "l", col = ycol, lwd = 3) legend(1,.1, legend = y, col = ycol, lwd = 3) # いや,絶対もっと簡単な方法があったはず