前言
关于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)