こんにちは、樋口です。書き込みありがとうございます。 いえいえ、初心者の方には「マニアック」に見えようかと思いますが、少し手 慣れてきてRも触ってみてという段階の方には、なかなかおもしろいTipsにつ ながる書き込みと思います。また私にとっても開発のヒントになります。いつ もありがとうございます。 さて今回は、最小スパニング・ツリー(minimum spanning tree)の観点から、 重要とみられるedgeを検出し、それを赤色で表示するということですね。今回 もかなりおもしろそうと思います。 共起ネットワークを「R Source」形式で保存し、このファイルの末尾に以下を 付け加えて実行してください。色指定の部分は、お好きな色に変更していただ けます。HTMLのカラーコードが使えます。 http://www.colordic.org/ また「edge.label」の箇所の「#」を削除すると、edgeのjaccard係数が表示さ れます。確認用に使えるかもしれません。 #--------------------------------------------------------------------- # 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) ) } for ( i in 1:ecount(n2) ){ name_n2 <- paste( get.edgelist(n2,name=T)[i,1], get.edgelist(n2,name=T)[i,2] ) for ( j in 1:ecount(mst) ){ name_mst <- paste( get.edgelist(mst,name=T)[j,1], get.edgelist(mst,name=T)[j,2] ) if ( name_n2 == name_mst ){ edg_col[i] <- "#B22222" # ここで色指定 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") ) ], #pos = 4, #offset = 1, font = text_font, cex = f_size, col = "black" ) } #--------------------------------------------------------------------- p.s. 些末なことながら、前から少し気になっていたのですが、「先生」と「さま」 はどちらか片方で十分かと思われます。両方付いていると、いかにも偉そうで すし (^_^ |