2017-05-20 22 views
1

私はPythonとigraphには本当に新しいので、質問は本当に簡単かもしれません。python igraph:ノードとエッジは、ノードに関連付けられた番号に応じて色付けされます

私は128ノードのネットワークと、それぞれが0と1の間の128個の数字の配列を持っています。数字はノードの特徴を表します。

私は2つのことをしたい:ij間のエッジの色は、この基準に従って与えなければならないarray[i] == array[j]

  • 場合ノードij

    • 色が同じでなければなりません。 if array[i]<=array[j] -> color_edge[ij] = color_node[i] else color_edge[ij] = color_node[j]

    私は多くの事を試みたが、私は大きな問題があると思う:

    • g.vs[i]["color"] = number「赤色」または「色のHTML表記」の文字列を挿入する必要があります。しかし、配列の各番号を文字列にどのように関連付けることができますか?
    • g.es["color"]はすべてのリンクに色を与えます。しかし、g.es[i]["color"]は機能しません(ここではgは私のグラフ、g.es[i][".."]ではiがエッジのIDです)。最初の質問について

    、私が提案することができる唯一の解決策は、array上の状態を確認し、最終的に1の色を変更

    g.vs[0]["color"] = "red" . . . g.vs[127]["color"] = "blue"

    のように各ノードを手動で色を割り当てることです2つのノード(g.vs[i]["color"] = g.vs[j]["color"])。しかし、それは時間の莫大な損失であり、一般的な方法ではありません(ネットワークに10^6ノードがある場合はどうでしょうか?)。私は、私は、彼らが「選びだし2どのように理解していない私は、私の場合にhereでコードを適応させることを試みたが、私は得られた最良の2つの異なる色(及びmoroverた、2番目の質問については、このhere

    で示唆されました")

    どうすればこの問題を解決できますか?

    p.s.私は2つの質問をしたことを知っているが、彼らは非常に関連していると思う。しかし、必要に応じてこの投稿を編集して新しい投稿を作成することができます。

    ありがとうございます。

  • 答えて

    0

    各差分に関連付けられた色の辞書を作成します。必要な色の数は不明ですが、各色に「赤」または「#FFFFFF」という色名を割り当ててください。たとえば、

    coldict = {} 
    coldict[0] = "red" 
    

    差分配列[i] - array [j] = 0をチェックすると、赤が割り当てられます。予想されるすべての相違に対してこれを行います。

    +0

    私は128色が必要です。しかし、私はより大きなネットワークを持っている場合、私はもっと必要があります。一般に、各ノードには1つの色が必要です。この方法は、私がリンクしたものと非常によく似ていて、手動で各色差を1つずつ割り当てる必要があるという問題があります。ノード数が10^5以上であるとします。あなたは私にこの方法は実用的ではないと同意するでしょう... –

    0

    私はこの質問をigrpahメーリングリストで尋ねました。答えはhereです。