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

前言
关于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)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值