功能列表:
1. 增加下载SVG转PNG功能,图片尺寸超出可视区域也能够下载全部显示出来
2. 增加图谱放大缩小平移功能
3. 增加图谱初始化加载时自动缩放功能
4. 增加导出excel功能,配合后台工具类达到导入excel的功能
5. 增加右键菜单功能(删除,编辑)
6. 增加拖拽添加连线功能
7. 增加鼠标点击画布增加节点功能,支持批量添加并取消连续点击连续添加的功能
8. 增加右键删除节点和左侧工具栏删除节点功能
9. 增加环形布局
10. 增加矩形布局

在此大神的代码基础上,进行了修改,源代码地址::https://github.com/zhangzn3/D3-Es6   

修改版代码地址:https://github.com/f2733938/D3_ES6

使用文档:

D3-Es6-master 使用文档 V2

  1. 解压D3-Es6-master  在docs 文件夹下,打开index.htm 进行操作

  1. 核心js  home.bundle.js      D3-Es6-master\docs\js

(1) 初始加载数据 _api2.default.getData().always(function (rps)方法

(2) 添加节点  d3.select('#J_AddNode').on("click.add-node", function ()方法

(3) 添加连线,建立对应关系,双向线代码部分理应删除

(4) 导出excel  exportExcel: function exportExcel(json)

(5) 显示数据

  1. 使用

(1)  添加节点

点击添加节点,弹出输入框,输入信息后点击添加即为添加成功

(2)  批量添加节点(新增)

添加多个有内容节点时,节点名称用|分隔,可以复用节点标题和节点注释,节点数量不必填写

只填写节点数量时,生成对应个数的空白节点

(3)  删除节点

选中该节点,点击删除节点,如果该节点有子级时,子级节点并不会消失,变成游离状态

(4)  添加连线

点击添加连线,点击父级节点,鼠标左键进行拖动至子级节点,箭头由父级指向子级

(5)  删除连线

同删除节点

  1. 说明(问题)

(1) 新增数据时,修改 data.js 文件 docs\docs\datajs\data.js

(2) 原始根节点(顶级节点),在excel 没有数据,需要手动添加一行.

在添加数据时处理,再次添加次级根节点不需要操作excel

顶级节点的默认Id 为root,同(3)图,导出Excel时,与顶级节点关联的,显示如下

(3) 进行删除节点操作时,只能选择一个节点,多选或不选时,提示内容,当删除异常时,使用鼠标右键删除

(4) 目前导出的excel名称默认为excel+毫秒,工作表名称默认名称为mySheet

(5) 删除节点或删除连线时,可以在该节点进行鼠标右键操作

  1. 测试数据   cscoIV期评估

6.  导入数据  后台修改第二版

对原有的excel 进行导入编辑时,需要在后台生成对应的json 文件,excel 文件不可有跳转数据并且必须要有顶级节点

(1) .  使用TestReadPoi 生成json 文件

配置读取文件路径,修改在该类下的filePath

配置json文件导出路径,修改工具类WriteText 下的path

执行junit  ,得到json  文件

(2) .  将数据复制进data.js 中

data.js 文件位置 \docs\docs\datajs\data.js

目前生成的 json 数据和d3  所需要的数据一致

实现导入excel功能时,第一版完全是前端进行解析,但是得到json 后,无法再次调用绘制D3 的方法(前端水平限制了我),只能按照从后台生成json ,然后整体复制的方法,方法low了一些,但是整体功能都能实现

差异列表:
1. 新增节点取消随机数生成,采用表格输入

2. 增加批量添加节点的功能
3. 导出excel 时,新增导出字段,不仅仅是source target,见1(4)
4. 在原有导出excel功能,添加配合后台工具类达到导入excel的功能
5. 增加右键菜单功能(删除,编辑)
6. 修改节点显示
7. 增加节点时取消连续点击连续添加的功能

D3.js+Es6+webpack构建人物关系图(力导向图)的更多相关文章

  1. D3.js+Es6+webpack构建人物关系图(力导向图),动态更新数据,点击增加节点,拖拽增加连线...

    觉得不错的麻烦加个Star:https://github.com/zhangzn3/D3-Es6 在线预览地址:https://zhangzn3.github.io/D3-Es6 功能列表:1. 增加 ...

  2. D3.js力导向图中新增节点及新增关系连线示例

    大家在使用D3.js中的力导向图时,基本都会遇到动态增加节点及连线的需求,这里记录一下我的实现方式. 话不多说,先放代码: <!DOCTYPE html> <html lang=&q ...

  3. d3.js(v5.7)力导向图(关系图谱)

    先上图,后面再一一解释: ok,为了方便理解,这里我就没有用之前封装的automatch函数来将数据和节点匹配了,如果你对enter(),exit()函数还不是很理解的话,请移步至我之前写的<n ...

  4. D3.js 力导向图的显示优化

    D3.js 作为一个前端,说到可视化除了听过 D3.js 的大名,常见的可视化库还有 ECharts.Chart.js,这两个库功能也很强大,但是有一个共同特点是封装层次高,留给开发者可设计和控制的部 ...

  5. D3.js力导向图(适用于其他类型图)中后添加元素遮盖已有元素的问题解决

    上一篇说了在D3.js中动态增加节点及连线的一种实现方式,但是有后添加元素遮盖原节点的现象,这一篇说一下出现这个现象的解决办法. 在D3.js中后添加的元素是会遮盖先添加的元素的,同时还有一个设定:后 ...

  6. D3.js 力导向图

    花了大半天看了一个八十几行的代码..心累 力导向图是之前就有画过很多次的东西,但是这次的代码看上去很陌生,然后发现是D3更新了4.0.... 先贴代码 var svg = d3.select(&quo ...

  7. D3.js 力导向图的制作

    力导向图中每一个节点都受到力的作用而运动,这种是一种非常绚丽的图表. 力导向图(Force-Directed Graph),是绘图的一种算法.在二维或三维空间里配置节点,节点之间用线连接,称为连线. ...

  8. D3.js系列——布局:饼状图和力导向图

    一.饼状图 在布局的应用中,最简单的就是饼状图. 1.数据 有如下数据,需要可视化: , , , , ]; 这样的值是不能直接绘图的.例如绘制饼状图的一个部分,需要知道一段弧的起始角度和终止角度,这些 ...

  9. Vue和d3.js(v4)力导向图force结合使用,v3版本升级v4【一】

    前段时间因为参与项目涉密,所以一直没有更新博客,有些博友给我私信或者留言要部分博文的源码,因为我的电脑更换,demo的源码没有备份 所以无法提供.大家可针对具体问题问我,有空我定会回复的.另外转发文章 ...

随机推荐

  1. Linux service,挂载,定时任务等常用服务

    一.防火墙 防火墙根据配置文件/etc/sysconfig/iptables 来控制本机的“出.入”网络访问行为 其对行为的配置策略有四个策 1. 基础必备技能           查看防火墙状态 s ...

  2. javascript--判断语句

    1.if...else.. if(m===1){ console.log('1') }else{ console.log('X') } 一般if 里面采用类型全等的运算符. 2.switch var ...

  3. 配置类一@Configuration

    import org.springframework.context.annotation.Configuration; @Configuration用于定义配置类,可替换xml配置文件,被注解的类内 ...

  4. c++ TCP 获取客户端IP

    #include<stdio.h> #include<stdlib.h> #include<string.h> #include<errno.h> #i ...

  5. Struts2配置详情

    Struts2的核心功能是action,对于开发人员来说,使用Struts2主要就是编写action,action类通常都要实现com.opensymphony.xwork2.Action接口,并实现 ...

  6. thinkphp 静态缓存

    要使用静态缓存功能,需要开启HTML_CACHE_ON参数,并且使用HTML_CACHE_RULES配置参数设置静态缓存规则文件 . 大理石构件厂家 虽然也可以在应用配置文件中定义静态缓存规则,但是建 ...

  7. [JZOJ 5811] 简单的填数

    题意:自己搜吧... 思路: 记二元组\((x,l)\)表示当前为\(x\)且之前有\(l\)个连续数与\(x\)相同. 并且维护up和low数组表示取到最大/最小值时,连续序列的长度. 正一遍,反一 ...

  8. Android 配置正式签名和debug签名

    为了测试微信分享,微信分享必须有签名信息才能成功调用微信,所以需要debug 下设置签名,方便调试build.gradle里,配置2个签名: signingConfigs { release { ke ...

  9. JVM内核-原理、诊断与优化学习笔记(五):GC参数

    文章目录 堆的回顾 串行收集器 并行收集器 ParNew(par-并行的缩写,new-新生代,所以只是新生代并行) Parallel收集器 参数设置 -XX:MaxGCPauseMills -XX:G ...

  10. Codeforces 1167C - News Distribution

    题目链接:http://codeforces.com/problemset/problem/1167/C 题意:大概就是分成几个小团体,给每个人用1 - n编号,当对某个人传播消息的时候,整个小团体就 ...