1 简单引入
- 日常工作、生活中我们经常会遇到一些复杂的事务关系,比如人物关系,那如何才能清楚直观的看清楚这些任务关系呢?
- 比如我们从网上搜索1个人物关系图,大家看看:
声明:以下图片来源于网络,如果涉及版权问题,请联系作者删除。本文仅供学习,不做他用。
- 那我们如何使用
Python
来实现类似的人物关系图呢? - 这里我们需要用到Python的
networkx
模块,它可以帮助我们很好的显示我们需要的效果。
2 关于Networkx
2.1 Networkx简单说明
NetworkX
是一个用于创建、操作和研究复杂网络的Python
库;- 可以创建、分析和可视化各种类型的网络,例如社交网络、Web图、生物网络等;
NetworkX
可以用来创建各种类型的网络,包括有向图和无向图;- 提供各种方法来添加、删除和修改网络中的节点和边;
NetworkX
还提供许多图的算法和分析工具;NetworkX
还提供多种方式来可视化网络。
2.2 Networkx部分源码
NetworkX
支持四种图,从以下源码可以看出:
Python37\Lib\site-packages\networkx\classes\__init__.py
from .graph import Graph
from .digraph import DiGraph
from .multigraph import MultiGraph
from .multidigraph import MultiDiGraph
from .ordered import *
from .function import *
from networkx.classes import filters
from networkx.classes import coreviews
from networkx.classes import graphviews
from networkx.classes import reportviews
- 四种图即为:
图 | 说明 |
---|---|
Graph |
无多重边无向图 |
DiGraph |
无多重边有向图 |
MultiGraph |
有多重边无向图 |
MultiDiGraph |
有多重边有向图 |
- 而本文我们要用的是
Graph
,它主要是用点和线来刻画离散事务集合,每对事务之间以某种方式相联系的数学模型; Graph
可以用来表示的关系图为人物关系图、流程图等等;- 以下为
Graph
的几个方法源码:
Python37\Lib\site-packages\networkx\classes\graph.py
def draw_networkx_nodes(
G,
pos,
nodelist=None,
node_size=300,
node_color="#1f78b4",
node_shape="o",
alpha=None,
cmap=None,
vmin=None,
vmax=None,
ax=None,
linewidths=None,
edgecolors=None,
label=None,
margins=None,
):
"""Draw the nodes of the graph G.
def draw_networkx_edges(
G,
pos,
edgelist=None,
width=1.0,
edge_color="k",
style="solid",
alpha=None,
arrowstyle="-|>",
arrowsize=10,
edge_cmap=None,
edge_vmin=None,
edge_vmax=None,
ax=None,
arrows=None,
label=None,
node_size=300,
nodelist=None,
node_shape="o",
connectionstyle="arc3",
min_source_margin=0,
min_target_margin=0,
):
r"""Draw the edges of the graph G.
def draw_networkx_labels(
G,
pos,
labels=None,
font_size=12,
font_color="k",
font_family="sans-serif",
font_weight="