【知识图谱的可视化】streamlit读取三元组生成有向图

发布于:2022-12-20 ⋅ 阅读:(498) ⋅ 点赞:(0)

前言
关于Streamlit生成图,相关链接如下:

https://github.com/ChrisDelClea/streamlit-agraph

或直接执行pip install streamlit-agraph下载安装。

代码部分

op=open('test.txt','r')
list=[]
for line in op:
    list.append(line)
num=20
subs=np.arange(num)
objs=np.arange(num)

rels = [([0] * num) for i in range(num)]
for i  in  range(0,num):
   subs[i]= int(list[i].split('\t')[0])
   objs[i] = int(list[i].split('\t')[2])
a=np.unique(subs)
b=np.unique(objs)
c=np.append(a,b)
c=np.unique(c)
nodes=[]
edges=[]

其中test.txt如图所示,为一个由头实体,关系,尾实体构成的三元组文件。num=20表示读取前20个数据。

 调用相关函数生成有向图:

for i  in  range(0,len(c)):
    nodes.append( Node( id=str(c[i]),
                        label="person",
                        size=25,
                        shape="circularImage",
                        image="http://i0.hdslb.com/bfs/article/aafceafc4edf590856866c4ed0d56d4d7a6c8635.jpg"
                  )
                ) # includes **kwargs

for i  in  range(0,num):
    edges.append(   Edge(source=str(subs[i]),
                    label=list[i].split('\t')[1],
                    target=str(objs[i]),
                   # **kwargs
                   )
            )

config = Config(width=500,
                height=500,
                # **kwargs
                )

return_value = agraph(nodes=nodes,
                      edges=edges,
                      config=config)

 最后的效果如图。

附上完整代码

import streamlit
from streamlit_agraph import agraph, Node, Edge, Config
import sys
import string
import numpy as np
data_path=''

#读取数据
op=open('test.txt','r')
list=[]
for line in op:
    list.append(line)
num=20
subs=np.arange(num)
objs=np.arange(num)

rels = [([0] * num) for i in range(num)]
for i  in  range(0,num):
   subs[i]= int(list[i].split('\t')[0])
   objs[i] = int(list[i].split('\t')[2])
a=np.unique(subs)
b=np.unique(objs)
c=np.append(a,b)
c=np.unique(c)
nodes=[]
edges=[]

for i  in  range(0,len(c)):
    nodes.append( Node( id=str(c[i]),
                        label="person",
                        size=25,
                        shape="circularImage",
                        image="http://i0.hdslb.com/bfs/article/aafceafc4edf590856866c4ed0d56d4d7a6c8635.jpg"
                  )
                ) # includes **kwargs

for i  in  range(0,num):
    edges.append(   Edge(source=str(subs[i]),
                    label=list[i].split('\t')[1],
                    target=str(objs[i]),
                   # **kwargs
                   )
            )

config = Config(width=500,
                height=500,
                # **kwargs
                )

return_value = agraph(nodes=nodes,
                      edges=edges,
                      config=config)

网站公告

今日签到

点亮在社区的每一天
去签到