Search code examples
pythonnetworkxgephi

Visualise networkx graph in Gephi


I want to visualise my networkx graph in Gephi. My graph has two types of nodes ntype="main" and ntype="sub" as follows.

    [('organisation', {'ws': 347.9, 'ntype': 'main'}), ('employee', {'ws': 0, 'ntype': 'sub'}), 
('minor_staff', {'ws': 0, 'ntype': 'sub'}), ('assets', {'ws': 0, 'ntype': 'sub'}), 
('stocks', {'ws': 315.0, 'ntype': 'main'}), ('HR', {'ws': 0, 'ntype': 'sub'}), 
('Director_board', {'ws': 0, 'ntype': 'sub'}), ('stakeholders', {'ws': 0.1, 'ntype': 'sub'}),
 ('stockmarket', {'ws': 488.5, 'ntype': 'main'}), ('events', {'ws': 0, 'ntype': 'sub'}),
 ('facilities', {'ws': 0, 'ntype': 'extended'})]

When visualising with Gephi, I want to show my main nodes as blue and sub nodes as grey.

Is there any special way of saving the nodes in networkx, for Gephi to identify these color codes?


Solution

  • This solved my problem

    import networkx as nx
    """ Create a graph with three nodes"""
    G = nx.Graph()
    G.add_node('red', ws=1.0, ntype = 'main')
    G.add_node('green', ws=1.5, ntype = 'sub')
    G.add_node('blue', ws=1.2, ntype = 'sub')
    
    for item in G.nodes(data = True):
        if item[1]['ntype'] == 'main':
            G.node[item[0]]['viz'] = {'color': {'r': 255, 'g': 0, 'b': 0, 'a': 0}}
        elif item[1]['ntype'] == 'sub':
            G.node[item[0]]['viz'] = {'color': {'r': 0, 'g': 255, 'b': 0, 'a': 0}}
    
    """ Write to GEXF """
    # Use 1.2draft so you do not get a deprecated warning in Gelphi
    nx.write_gexf(G, "file2.gexf", version="1.2draft")