2017-03-21 22 views
1

nxGraphにカスタムIDを使用して新しいノードを作成する方法、またはIDのラベルを変更する方法はありますか?私は変更しようとしているプロパティが「0」に設定されていますそのIDラベルです:GMLファイル内のノードのid値を変更する方法

graph [ 
    node [ 
    id 0 
    label "Category:Class-based_Programming_Languages" 
    ] 

私はこれを行うにしようとしましたが、それはうまくいきませんでした:

G = nx.Graph() 
pageid = 12345 
G.add_node('test', id = pageid) 

しかし、これはありません'id'値を変更するのではなく、まったく無視されます。変更されたidはPythonプログラム上で見ることができますが、問題はwrite_gml関数の使用にあります。そのid値は変更されません。誰も私がこれについてどうやって行くことができるか知っていますか?ありがとうございました!

答えて

0

ノード属性は、試行している方法で設定できますが、「コンパクト」なノードアクセサーでノード属性にアクセスしようとすると表示されません。種々の方法を以下に示します:

import networkx as nx 

G = nx.Graph() 
pageid = 12345 
G.add_node('test', id = pageid) 

# the basic node iterator doesn't show the attributes:  
print G.nodes() 
>>> ['test'] 

# but here are some ways to access them: 
print G.nodes(data=True) 
>>> [('test', {'id': 12345})] 

print nx.get_node_attributes(G, "id") 
>>> {'test': 12345} 

print G.node['test'] 
>>> {'id': 12345} 
+0

をはい、これはそれを表示するための一つの方法ですが、関数nx.write_gml(G、「test.gml」)を使用する場合、GMLファイルがまだのid値が表示されますノードは単に「0」となります。 –

+0

私はあなたの質問にその情報を追加することをお勧めします! 'write_gml'にある問題について何も言及していませんでした。 – Bonlenfum

+0

私の場合、コードはすでに定義されているようにノードIDを出力しています。ただし、プロパティ "id"が設定されていないノードでは、ゼロから始まる整数が与えられます([gml.py]の360行目を参照してください(https://github.com/networkx/networkx/blob/v1.9.1/ 'nid = G.node [n] .get( 'id'、next(count))')おそらくあなたは別のバージョンを使用していますか?私はnetworkxバージョン1.9.1とpython 2.7.12でテストしました – Bonlenfum

関連する問題