こんにちは、樋口です。
最小スパニング・ツリーを表示する機能は、「共起ネットワーク」のオプショ
ンとして、KH Coderの次期バージョンに取り入れさせていただこうと考えてお
ります。今の所、添付の画面のような強調にする予定です。
ただ、次期バージョンの公開までにはまだ少し期間を要すると思いますので、
添付画面のような強調を行うための修正版Rコマンドを一応貼っておきます。
よろしかったらお使いください。
#---------------------------------------------------------------------
# MSTの検出
mst <- minimum.spanning.tree(
n2,
weights = 1 - get.edge.attribute(n2, "weight"),
algorithm="prim"
)
# MSTに合致するedgeを強調
if (length(edg_col) == 1){
edg_col <- rep(edg_col, ecount(n2) )
}
if (length(edg_width) == 1){
edg_width <- rep(edg_width, ecount(n2) )
}
n2_edges <- get.edgelist(n2,name=T);
mst_edges <- get.edgelist(mst,name=T);
for ( i in 1:ecount(n2) ){
name_n2 <- paste(
n2_edges[i,1],
n2_edges[i,2]
)
for ( j in 1:ecount(mst) ){
name_mst <- paste(
mst_edges[j,1],
mst_edges[j,2]
)
if ( name_n2 == name_mst ){
edg_col[i] <- "gray30" # edgeの色
edg_width[i] <- 2 # edgeの太さ
if ( length(edg_lty) > 1 ){
edg_lty[i] <- 1 # edgeの線種
}
break
}
}
}
# プロット
plot.igraph(
n2,
vertex.label = "",
vertex.color =ccol,
vertex.frame.color =com_col_v,
vertex.size =v_size,
vertex.shape =v_shape,
edge.color =edg_col,
edge.lty =edg_lty,
edge.width =edg_width,
#edge.label =round( get.edge.attribute(n2, "weight"), 3),
#edge.label.cex =0.8,
layout =lay_f,
rescale =F
)
# 語のラベルを追加
lay_f_adj <- NULL
if (smaller_nodes ==1){
if ( is.null(lay_f_adj) == 1){
lay_f_adj <- cbind(lay_f_adj, lay_f[,1])
lay_f_adj <- cbind(lay_f_adj, lay_f[,2] + ( max(lay_f[,2]) - min(lay_f[,2]) ) / 38 )
}
text(
lay_f_adj,
labels = colnames(d)
[ as.numeric( get.vertex.attribute(n2,"name") ) ],
pos = 4,
offset = 0.25,
font = text_font,
cex = f_size,
col = "black"
)
} else {
text(
lay_f,
labels = colnames(d)
[ as.numeric( get.vertex.attribute(n2,"name") ) ],
font = text_font,
cex = f_size,
col = "black"
)
}
#---------------------------------------------------------------------
|