python3中NetworkX网络图绘制
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()
使用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()
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()
总结
本文介绍了NetworkX包绘制网络图的基本使用介绍,当你还在想如何在python里面绘制网络图的时候,使用NetworkX就对了,详细官方文档请参考NetworkX官方文档。
- 原文作者:春江暮客
- 原文链接:https://www.bobobk.com/229.html
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。