美文网首页
用Python制作交互式知识图 使用 NetworkX 和 Pl

用Python制作交互式知识图 使用 NetworkX 和 Pl

作者: iCloudEnd | 来源:发表于2023-09-06 08:49 被阅读0次
image.png

让我们使用 NetworkX 和 Plotly 使其具有交互性。

创建知识图谱

首先,我们定义代表知识图谱中关系的数据。我们有三个列表:head、relation和tail,分别表示起始实体、实体之间的关系和结束实体。我们从定义的列表创建一个数据框,并使用 NetworkX 创建关系的图形表示。

import pandas as pd
import networkx as nx
import plotly.graph_objects as go

# Define the heads, relations, and tails
head = ['drugA', 'drugB', 'drugC', 'drugD', 'drugA', 'drugC', 'drugD', 'drugE', '基因1', '基因2','基因3', '基因4', '基因50', '基因2', '基因3', '基因4']
#relation = ['treats', 'treats', 'treats', 'treats', 'inhibits', 'inhibits', 'inhibits', 'inhibits', 'associated', 'associated', 'associated', 'associated', 'associated', 'interacts', 'interacts', 'interacts']

relation = [ '治疗' , '治疗' , '治疗' , '治疗' , '抑制' , '抑制' , '抑制' , '抑制' , '相关' , '相关' , '相关' , '相关' , '相关' , '相互作用' , '相互作用' , '相互作用' ] 
#tail = ['fever', 'hepatitis', 'bleeding', 'pain', 'gene1', 'gene2', 'gene4', 'gene20', 'obesity', 'heart_attack', 'hepatitis', 'bleeding', 'cancer', 'gene1', 'gene20', 'gene50']

tail = [ '发烧' , '肝炎' ,'出血' , '疼痛' , '基因1' ,'gene2' , 'gene4' , 'gene20' , 'obesity' , 'heart_attack' , 'hepatitis' , 'bleeding' , 'cancer' , 'gene1' , 'gene20' , 'gene50' ] 

# Create a dataframe
df = pd.DataFrame({'head': head, 'relation': relation, 'tail': tail})

# Create a graph
G = nx.Graph()
for _, row in df.iterrows():
    G.add_edge(row['head'], row['tail'], label=row['relation'])

节点定位

接下来,我们定义节点定位,这是图形可视化的一个重要方面。在这里,我们确定节点(实体)在画布上的放置位置,使图形更具视觉组织性和可读性。在此示例中,我们将使用 Fruchterman-Reingold 布局算法(一种力导向布局)来定位节点。

相关文章

网友评论

      本文标题:用Python制作交互式知识图 使用 NetworkX 和 Pl

      本文链接:https://www.haomeiwen.com/subject/aedkvdtx.html