How to change attributes of a networkx / matplotlib graph drawing?

后端 未结 1 883
情深已故
情深已故 2021-02-09 06:26

NetworkX includes functions for drawing a graph using matplotlib. This is an example using the great IPython Notebook (started with ipython3 notebook --pylab inline

1条回答
  •  天涯浪人
    2021-02-09 06:57

    IPython is a great tool for finding out what functions (and objects) can do. If you type

    [1]: import networkx as nx
    [2]: nx.draw?
    

    you see

    Definition: nx.draw(G, pos=None, ax=None, hold=None, **kwds)

    **kwds: optional keywords
       See networkx.draw_networkx() for a description of optional keywords.
    

    And if you therefore type

    [10]: nx.draw_networkx?
    

    you will see

    node_color: color string, or array of floats
    edge_color: color string, or array of floats
    width: float
       Line width of edges (default =1.0)
    labels: dictionary
       Node labels in a dictionary keyed by node of text labels (default=None)
    

    So, armed with this information, and a bit of experimentation, it is not hard to arrive at:

    import matplotlib.pyplot as plt
    import numpy as np
    import networkx as nx
    import string
    
    G = nx.generators.erdos_renyi_graph(18, 0.2)
    nx.draw(G,
            node_color = np.linspace(0,1,len(G.nodes())),
            edge_color = np.linspace(0,1,len(G.edges())),
            width = 3.0,
            labels = {n:l for n,l in zip(G.nodes(),string.ascii_uppercase)}
            )
    plt.show()
    

    which yields

    enter image description here

    0 讨论(0)
提交回复
热议问题