Knowledge Graph 绘图

本文介绍如何使用NetworkX库自定义知识图谱的视觉效果,包括节点颜色、大小、类型划分,边宽、颜色以及节点边框颜色,并探讨了图布局的重要性,以增强图表的可读性和理解力。
摘要由CSDN通过智能技术生成

图论是一种非常强大的数据科学工具,可让您可视化和理解复杂的交互。NetworkX是一个用于构建图形的 Python 包,它具有大部分可用的默认值,但利用 matplotlib 允许我们自定义图形的几乎所有可能的方面。 我知道我希望它在我的脑海中是什么样子,但是经过数小时的文档和 StackOverflow 搜索后,我决定为我学会如何改变的所有东西创建这个一站式商店! 现在,您也可以构建可读的图表来帮助可视化复杂的关系。

1. 创建 NetworkX 图

我们将从制作一个基本图表开始! 有几种方法可以做到这一点。 我发现最简单的方法是从你指定边缘的 pandas DataFrame 中。 什么是优势? 好吧,图是使用节点构建的。 一个节点代表某个对象,可能是一个人或一个组织,而一条代表从一个节点到另一个节点的实际连接。 所以在下面的例子中,“A”、“B”、“C”和“D”是节点,它们之间的线是边。

fig, ax = plt.subplots(figsize=(15,8))

relationships = pd.DataFrame({
   'from': ['A', 'A', 'A'], 
                              'to':   ['B', 'C', 'D']})

G = nx.from_pandas_edgelist(relationships, 'from', 'to', create_using=nx.Graph())

nx.draw(G, with_labels=True)

在这里插入图片描述

2. 节点颜色

我们也可以很容易地改变所有节点的颜色。 您会注意到一种模式,即为图形全局更改特征非常简单(在 .draw() 方法中使用关键字)。

fig, ax = plt.subplots(figsize=(15,8))

relationships = pd.DataFrame({
   'from': ['A', 'A', 'A'], 
                              'to':   ['B', 'C', 'D']})
 
G = nx.from_pandas_edgelist(relationships, 'from', 'to', create_using=nx.Graph())

# Set node_color
nx.draw(G, with_labels=True, node_color='red')

在这里插入图片描述

3. 节点类型的节点颜色

但是假设我们想根据类型而不是全局更改节点的颜色。 这需要一些设置,但一旦到位,我们可以快速添加新类型并相应地自动着色。 基本上,我们创建另一个 DataFrame,在其中指定节点 ID 和节点类型,并使用 pd.Categorical() 方法应用颜色图。

所以现在我们的字母节点是蓝色的,我们的数字节点是橙色的!

fig, ax = plt.subplots(figsize=(15, 8))

relationships = pd.DataFrame({
   'from': ['A', 'A', 'A', '1', '2'], 
                              'to':   ['B', 'C', 'D', 'C', 'C']})

# Create DF for node characteristics
carac = pd.DataFrame({
   'ID':['A', 'B', 'C', 'D', '1', '2'], 
                      'type':['Letter','Letter', 'Letter', 'Letter', 
                      'Number', 'Number']})

# Create graph object
G = nx.from_pandas_edgelist(relationships, 'from', 'to', create_using=nx.Graph())

# Make types into categories
carac = carac.set_index('ID')
carac = carac.reindex(G.nodes
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值