一:三级关系图知识图谱

最近写了个demo,主要功能是搜索实体,搜索结果显示与该实体相关的公司、子公司、设备、位置、状态、危害这六类,数据是通过我司的数据标注系统提供的。后端用到的技术栈是python3、java1.8、neo4j3.5和Django。前端通过Django获取数据,做数据处理,搭配好echarts配置参数,比如data、links、categories、symbolSize。

二:先上效果图:

三:data、links、category、symbolSize数据配置

3.1 data配置:想要展示三个层级,定义了三个node 每个node里都配置了name、draggable、category、id、symbolSize
3.2 links配置:数据指向
3.3 category:功能是每个状态对应一个颜色
3.4 symbolSize:data节点的大小,一级的大小是全部二级的总和,二级是三级的总和(原始节点的大小是后台返回来的,做的求和)
//echarts 数据var data = [];var links = [];var n2 = []//构造展示的数据var maxDisPlayNode = 50;var id = 0;var num = {}var num2 = ''var temp = [];for (var i = 0; id < maxDisPlayNode && i < searchResult.length; i++) {var newset1 = searchResult[i]['n1']['label']var newset2 = searchResult[i]['n2']['label']var newset3 = searchResult[i]['n3']['label']n2.push(newset1, newset2, newset3)for (var i = 0; i < n2.length; i++) {if (temp.indexOf(n2[i]) == -1) {temp.push(n2[i]);}}//获取node1node1 = {};node1['name'] = searchResult[i]['n1']['title'];node1['draggable'] = true;var n2Category = searchResult[i]['n1']['label']if (n2Category == 'company') {node1['category'] = 0;} else if (n2Category == 'subsidiary') {node1['category'] = 1;} else if (n2Category == 'device') {node1['category'] = 2;} else if (n2Category == 'location') {node1['category'] = 3;}  else if (n2Category == 'status') {node1['category'] = 4;} else if (n2Category == 'danger') {node1['category'] = 5;}var flag = 1;relationTarget = id.toString();for (var j = 0; j < data.length; j++) {if (data[j]['name'] === node1['name']) {flag = 0;relationTarget = data[j]['id'];break;}}node1['id'] = relationTarget;// num2 = parseInt(searchResult[i]['rel']['entity2_count'])// if (!num[node1['id']]) {//   num[node1['id']] = num2 + 20// } else {//   num[node1['id']] += num2// }node1['symbolSize'] = 1if (flag === 1) {id++;data.push(node1);}//获取node2node2 = {};node2['name'] = searchResult[i]['n2']['title'];node2['draggable'] = true;var n2Category = searchResult[i]['n2']['label']if (n2Category == 'company') {node2['category'] = 0;} else if (n2Category == 'subsidiary') {node2['category'] = 1;} else if (n2Category == 'device') {node2['category'] = 2;} else if (n2Category == 'location') {node2['category'] = 3;} else if (n2Category == 'status') {node2['category'] = 4;} else if (n2Category == 'danger') {node2['category'] = 5;}flag = 1;relationTarget = id.toString();for (var j = 0; j < data.length; j++) {if (data[j]['name'] === node2['name']) {flag = 0;relationTarget = data[j]['id'];break;}}node2['id'] = relationTarget;num2 = parseInt(searchResult[i]['rel2']['entity2_count'])if(!num[node2['id']]){num[node2['id']] = num2 + 20} else {num[node2['id']] += num2}if (flag === 1) {id++;data.push(node2);}// 判断有没有node3  有的话push到data和linksif (searchResult[i]['n3']) {node3 = {};node3['name'] = searchResult[i]['n3']['title'];node3['draggable'] = true;var n2Category = searchResult[i]['n3']['label']if (n2Category == 'company') {node3['category'] = 0;} else if (n2Category == 'subsidiary') {node3['category'] = 1;} else if (n2Category == 'device') {node3['category'] = 2;} else if (n2Category == 'location') {node3['category'] = 3;} else if (n2Category == 'status') {node3['category'] = 4;} else if (n2Category == 'danger') {node3['category'] = 5;}flag = 1;//        node3['level'] = 3;relationTarget = id.toString();for (var j = 0; j < data.length; j++) {if (data[j]['name'] === node3['name']) {flag = 0;relationTarget = data[j]['id'];break;}}node3['id'] = relationTarget;num2 = parseInt(searchResult[i]['rel2']['entity2_count'])if (!num[node3['id']]) {num[node3['id']] = num2 + 20} else {num[node3['id']] += num2}if (flag === 1) {id++;data.push(node3);}//获取relation2relation2 = {}relation2['source'] = node2['id'];relation2['target'] = node3['id'];relation2['category'] = 0;flag = 1;for (var j = 0; j < links.length; j++) {if (links[j]['source'] == relation2['source'] && links[j]['target'] == relation2['target']) {links[j]['value'] = searchResult[i]['rel2']['type'];links[j]['entity2_count'] = searchResult[i]['rel2']['entity2_count']flag = 0;break;} }if (flag === 1) {relation2['value'] = searchResult[i]['rel2']['type'];relation2['symbolSize'] = 10;links.push(relation2);}}//获取relation1relation = {}relation['source'] = node1['id'];relation['target'] = node2['id'];relation['category'] = 0;flag = 1;for (var j = 0; j < links.length; j++) {if (links[j]['source'] == relation['source'] && links[j]['target'] == relation['target']) {links[j]['value'] = searchResult[i]['rel']['type'];links[j]['entity2_count'] = searchResult[i]['rel']['entity2_count'];flag = 0;break;}}if (flag === 1) {relation['value'] = searchResult[i]['rel']['type'];relation['symbolSize'] = 10;links.push(relation);}}// 计算symbolSize大小for (var i = 0; i < data.length; i++){data[i]['symbolSize'] = num[data[i]['id']]}
复制代码

四:option配置参数

option = {title: {text: ''},tooltip: {},animationDurationUpdate: 1500,animationEasingUpdate: 'quinticInOut',label: {normal: {show: true,textStyle: {fontSize: 12},}},legend: {x: "center",data: [{name: '公司',icon: 'rect' //'circle', 'rect', 'roundRect', 'triangle', 'diamond', 'pin', 'arrow'},{name: '子公司',icon: 'triangle'}, {name: '设备',icon: 'circle'}, {name: '位置',icon: 'roundRect'}, {name: '状态',icon: 'pin'}, {name: '危害',icon: 'diamond'}] },series: [{type: 'graph',layout: 'force',symbolSize: 45,focusNodeAdjacency: true,roam: true,edgeSymbol: ['none', 'arrow'],categories: [{name: '公司',icon: 'rect' //'circle', 'rect', 'roundRect', 'triangle', 'diamond', 'pin', 'arrow'}, {name: '子公司',icon: 'triangle'}, {name: '设备',icon: 'circle'}, {name: '位置',icon: 'roundRect'}, {name: '状态', icon: 'pin'}, {name: '危害',icon: 'diamond'}],label: {normal: {show: true,textStyle: {fontSize: 12,},}},force: {repulsion: 1000},edgeSymbolSize: [4, 50],edgeLabel: {normal: {show: true,textStyle: {fontSize: 10},formatter: "{c}"}},data: data,  // data数据links: links,  // links 主要是做数据箭头连接lineStyle: {normal: {opacity: 1,width: 3,curveness: 0,color: 'source',}}}]};// 使用刚指定的配置项和数据显示图表。myChart.setOption(option);
复制代码

至此 完结!best regards!

知识图谱---echarts关系图相关推荐

  1. 论文浅尝 | 利用知识图谱嵌入和图卷积网络进行长尾关系抽取

    论文笔记整理:王狄烽,南京大学硕士,研究方向为关系抽取.知识库补全. 链接:https://arxiv.org/pdf/1903.01306.pdf 发表会议:NAACL2019 动机 现有的利用远程 ...

  2. 墨天轮沙龙 | 北京大学李文杰:面向知识图谱应用的图数据库系统gStore

    在6月8日举办的[墨天轮数据库沙龙第七期-开源生态专场]中,北京大学重庆大数据研究院图数据库与知识图谱实验室副主任.北京大学王选计算机研究所全职博士后 李文杰老师分享了<面向知识图谱应用的图数据 ...

  3. 0元包邮 | 知识图谱学习导图

    知识图谱可以说是整个AI的未来,是实现人工智能从"感知"跃升到"认知"的基础.近年来,作为实现认知智能的核心驱动力,已广泛应用在金融.电商.医疗.政务等诸多领域 ...

  4. echarts 关系图 option

    echarts 关系图 option <script type="text/javascript" src="plugins/echarts/echarts.min ...

  5. 人物关系知识图谱echarts斗破苍穹

    采用html代码引用jquery和echarts库实现斗破苍穹的人物关系知识图谱. 环境:HBuilder X <!DOCTYPE html> <html> <head& ...

  6. 论文浅尝 | 基于常识知识图谱感知和图注意力机制的对话生成

    OpenKG 祝各位读者中秋快乐! 链接:http://coai.cs.tsinghua.edu.cn/hml/media/files/2018_commonsense_ZhouHao_3_TYVQ7 ...

  7. 知识图谱和Neo4j图数据库

    一.知识图谱 互联网.大数据的背景下,谷歌.百度.搜狗等搜索引擎纷纷基于该背景,创建自己的知识图谱Knowledge Graph(谷歌).知心(百度)和知立方(搜狗),主要用于改进搜索质量. 1.什么 ...

  8. echarts关系图配置,及超出范围处理 + a、b两个节点互相指向时线上的字重叠问题

    情景:由于人物关系复杂,可以有几个 --几十个(上百个),所以固定范围内(如:500高度)可能放不下,或者太空.所以可以根据node节点(也可根据其他判断条件)来动态修改 div / canvas高度 ...

  9. 知识图谱--实体关系抽取,依存句法分析

    我爱自然语言处理 https://www.52nlp.cn/tag/%E4%BE%9D%E5%AD%98%E5%8F%A5%E6%B3%95%E5%88%86%E6%9E%90 基于Hanlp的依存句 ...

最新文章

  1. 20180925-7 规格说明书-吉林市2日游
  2. .NET程序性能的基本要领
  3. poj 2769 感觉♂良好 (单调栈)
  4. SQL Server数据库锁的类型、用法及注意事项详解
  5. Python matplotlib绘制饼图
  6. java List 常见坑
  7. mysql desc show_mysql 查看信息的命令(show\desc\explain)
  8. cc笔记_安装测试用例
  9. linux定时器无法重启pm2,在linux下开机启动pm2 不成功
  10. WebService cxf视频教程
  11. 常用的默认端口号(HTTP\HTTPS\FTP)
  12. php f4v元数据,IIS设置支持flv,f4v,mp4,ogv,webm
  13. 实用工具篇 | PPT图表制作软件
  14. disallow root login remotely 不起作用?
  15. 计算H时M分S秒以后是_最全的风机计算公式,学习了!
  16. 一文入门车载以太网,吐血整理!不看后悔!
  17. VMware虚拟机三种联网方法及原理和Linux 三种网络
  18. android系统软件卸载_adb配置使用
  19. 网易 盖楼 实现_网易严选宣布“退出鼓吹过度消费的双十一”网友:逆向营销...
  20. 需求背后程序员的辛酸—(由APP主题颜色随手机壳颜色变化需求带来的思考)

热门文章

  1. linux后台断点下载到指定目录,Linux下wget 断点续传 及 后台下载
  2. idea导入依赖报 Failed to read artifact descriptor 解决方法
  3. 网络框架Volley
  4. WeMall应用商店插件更新:
  5. s6 edge编译android,三星为Galaxy S6和S6 Edge升级Android 6.0.1
  6. 百年前的小学课本令人汗颜!
  7. #IT人的升职加薪tips# 如何真正学习Go 语言[翻译]
  8. 北京理工大学研究生计算机专业好考吗,北京理工大学计算机专业研究生的方向问题...
  9. 欧姆龙PLC的CIP协议报文
  10. Kendall's tau相似程度指标