- 追加された行はこの色です。
- 削除された行はこの色です。
[[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)
# いや,絶対もっと簡単な方法があったはず