Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Print graph in NetworkX

Is there a way to pretty print a graph in NetworkX? For example:

>>> import networkx as nx
>>> G = nx.Graph()
>>> G.add_edge('Alan', 'Bob')
>>> G.add_edge('Alan', 'Charles')
>>> G.add_edge('Alan', 'Xavier')
>>> G.add_edge('Charles', 'Xavier')
>>> G.add_edge('Joan', 'Xavier')

I would then like to see this graph as a json-like object, for example:

{
    'Alan': {
        'Bob': {},
        'Charles': {
            'Xavier': {}
        },
        'Xavier': {},
    },
    'Joan': {
        'Xavier': {}
    }
}

It doesn't have to be exactly like the above, but should give a good high-level data view of the graph (provided it's relatively small).

like image 492
samuelbrody1249 Avatar asked Jun 19 '26 15:06

samuelbrody1249


1 Answers

In newtorkx version 2.3, there is a method nx.to_dict_of_dicts:

nx.to_dict_of_dicts(G)

Output:

{'Alan': {'Bob': {}, 'Charles': {}, 'Xavier': {}},
 'Bob': {'Alan': {}},
 'Charles': {'Alan': {}, 'Xavier': {}},
 'Xavier': {'Alan': {}, 'Charles': {}, 'Joan': {}},
 'Joan': {'Xavier': {}}}
like image 157
Scott Boston Avatar answered Jun 21 '26 06:06

Scott Boston