2016-05-04 24 views
0

Rのigraphパッケージを使用して、次の予期しない動作が発生しました。グラフのedge.arrow.mode3(または両端の矢印が"<->")と指定されていて、edge.colorがのrgb()と指定されている場合、矢印はとなります色はです。一方の端に2つの矢印があるように見え、重なっていると暗い色になります。半透明のエッジ(igraph、R)による予期しない矢印の色の動き

これは、グラフがいくつかの矢印を他のものよりも暗く(より重要に見える)ようにするため、望ましくありません。私が可視化しようとしている実際のグラフは無向です。(すべての灰色、半透明の)辺の端にある矢印は、特定の頂点にいくつの接続があるかを示すために使用されます(グラフはかなり大きい頂点に重なるエッジがあるため、エッジが頂点に接続する場所を視覚的に判断することは容易ではありません(半透明のエッジや頂点を使用する理由もあります)。

ここではいくつかの作業例を示します。

library("igraph") 
plot(make_tree(5, mode="undirected"), vertex.size=10, edge.arrow.mode=3, edge.color=rgb(0,0,0,0.2)) 
plot(make_tree(5, mode="undirected"), vertex.size=10, edge.arrow.mode=3, edge.color=rainbow(5, alpha=0.3)) 

enter image description here

質問は、これを回避する方法は、はとても矢印はすべて同じになりますがありますか?

頂点の接続の数を視覚的に他の方法で表示することもできます(ただし、頂点の色(フルカラーのスペクトル)は既に別の視覚補助用に使用されていることに注意してください)。その上に頂点の彩色を施すと、虹のようなものになります)。接続の度合いを示すために頂点の形状を変更することは良い解決策ではありません(編集 - Tadのおかげで)。すべての矢頭を単色にすることも可能です(ただし、エッジカラーとは別に矢印色を変更する方法はありません)。

(ボーナス:これはバグやIGRAPHの特徴である?)

答えて

0

あなたは単にノード次数に基づいて頂点のサイズを変更できますか?

grph <- make_tree(5, mode="undirected") 
plot(grph, vertex.size=degree(grph)*5, edge.arrow.mode=0, 
    edge.color='black') 

graph

これは加重ネットワーク内のノードの強度のアイデアを与えることができる縁(edge.width)の厚さを変更することも可能です。これは実際には適用されません。

編集: 透明度の高いノードの度合いが小さくなるように、色のアルファチャンネルを変更するとどうなりますか?それ以外は、私は迷っています。無向グラフ上に矢印を置くことは、一般的には悪いアイデアのように思えます。特にノードの度合いを視覚化する手段である場合にはそうです。

colShift <- function(x, alpha){ 
         x <- col2rgb(x)/255 
         rgb(x[1], x[2], x[3], alpha=alpha) 
        } 

grph <- make_tree(5, mode="undirected") %>% 
     set_vertex_attr('color', value='dodgerblue4') 

vertAlpha <- 1.1 - 1/degree(grph) 
vertColor <- colShift(vertex_attr(grph, 'color'), vertAlpha) 

V(grph)$color <- vertColor 

plot(grph, vertex.size=degree(grph)*5, edge.arrow.mode=0, 
    edge.color='black') 

enter image description here

+0

それは小さなネットワークのためとラベルなしで動作しますが、私は100から500個の頂点を持ち、それぞれの頂点は、3個の数字からなる(常に)短いラベルを持っています。頂点のサイズを変更すると、接続していない頂点のラベルが部分的に頂点シェイプの外側に残ることがあります。避けたいのは(テキストのサイズを変更すると読めなくなる可能性があります)混雑したネットワークプロット。その制約を含むように質問を編集します。 – user3554004

+0

編集に関するコメント。より多くのアイデアを考えてくれてありがとう。残念ながら頂点の色は有益なので、頂点アルファは私の場合はうまくいきません。私は 'rgb()'の3つの値をすべて使用しています。したがって、白い背景のアルファ値が低いと、明るい色(または3つのカラーチャンネルすべてで1に近い値)のように誤って頂点が表示されます。ネットワークは社会関係を表しているので、矢印を持たないか、または両方の矢印を有することは意味的に同等である。それは問題じゃない。両者は等価/同一である必要があります。 – user3554004

関連する問題