美文网首页
用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