NetworkX是一个用于研究图形和网络的Python库。 NetworkX是根据BSD-new许可证发布的免费软件。可用于创造和操作复杂网络,学习复杂网络的结构及其功能。 

有了NetworkX你就可以用标准或者不标准的数据格式加载或者存储网络,它可以产生许多种类的随机网络或经典网络,也可以分析网络结构,建立网络模型,设计新的网络算法,绘制网络。

当然NetworkX单独存在不可能强大,这里春江暮客将使用广泛使用的其他常用python库绘制各种基础的网络图形。

1.绘制最基本的网络图

网络图由节点(node)和连接(edge)构成,在networkx里,pandas的datafrmae每一行代表一个连接里面的点,对应位置产生连接,例子中是from和to的每一个对应位置产生连接。

    ################导入所需库
    import pandas as pd
    import numpy as np
    import networkx as nx
    import matplotlib.pyplot as plt

    ################绘制网络图

    df = pd.DataFrame({ 'from':['A', 'B', 'C','A'], 'to':['D', 'A', 'E','C']})
    basic_net=nx.from_pandas_edgelist(df, 'from', 'to')
    fig = plt.figure()
    nx.draw(basic_net, with_labels=True)
    plt.show()
《python3中NetworkX网络图绘制》

使用NetworkX绘制网络图只需要上面简单的几步。

1.导入数据

basic_net=nx.from_pandas_edgelist(df, ‘from’, ‘to’),当然,networkx支持多种格式数据导入,nx.from_pandas_adjacency详情请看https://networkx.github.io/documentation/latest/reference/convert.html

2.绘制图形

nx.draw(basic_net, with_labels=True)

3.显示

plt.show()

2.节点之间连接颜色大小区别

由于不同节点连接重要性不一样,使用大小不同线段或者颜色连接显得异常重要,这里NetworkX也很方便的提供了这个功能,只需要在绘制过程中制定edge_color即可。

    ################导入所需库
    import pandas as pd
    import numpy as np
    import networkx as nx
    import matplotlib.pyplot as plt
    df = pd.DataFrame({ 'from':['A', 'B', 'C','A'], 'to':['D', 'A', 'E','C'], 'value':[1, 10, 5, 5]})

    ################绘制网络图
    color_net=nx.from_pandas_edgelist(df, 'from', 'to', create_using=nx.Graph() )
     ###制定颜色大小
    fig = plt.figure()
    nx.draw(color_net, with_labels=True, node_color='skyblue', node_size=1500, edge_color=df['value'], width=10.0)
    plt.show()
《python3中NetworkX网络图绘制》

3.网络图背景颜色设置

在NetworkX里面只需要使用set_facecolor即可设置背景颜色


    ################导入所需库
    import pandas as pd
    import numpy as np
    import networkx as nx
    import matplotlib.pyplot as plt
    df = pd.DataFrame({ 'from':['A', 'B', 'C','A'], 'to':['D', 'A', 'E','C'], 'value':[1, 10, 5, 5]})

    ################绘制网络图
    color_net=nx.from_pandas_edgelist(df, 'from', 'to', create_using=nx.Graph() )
     ###制定颜色大小
    fig = plt.figure()
    nx.draw(color_net, with_labels=True, node_color='skyblue', node_size=1500, edge_color=df['value'], width=10.0)
    fig.set_facecolor("#AAAA00")###仅仅在这里添加
    plt.show()
《python3中NetworkX网络图绘制》

总结

本文介绍了NetworkX包绘制网络图的基本使用介绍,当你还在想如何在python里面绘制网络图的时候,使用NetworkX就对了,详细官方文档请参考NetworkX官方文档