# vue-d3-graph
基于之前的代码进行修改:[neo4j-d3-graph](https://github.com/CoderWanp/neo4j-d3-graph)
具体功能及效果可以参考本人博客:[vue+d3v6实现动态知识图谱可视化展示](https://blog.csdn.net/tiandao451/article/details/109708427)
本人代码已被盗用,屑屑各位的肯定和认可,如果觉得项目有帮助,可以点个star,有空会对代码作进一步完善!
## 一、代码使用说明
### 1. 依赖安装
```sh
# 二选一
npm i
# yarn需要全局安装一下
yarn install
```
推荐使用 `cnpm` 来安装,速度更快:
```sh
# 二选一
npm install -g cnpm --registry=https://registry.npm.taobao.org
npm install cnpm -g --registry=https://registry.nlark.com
```
```sh
cnpm i
```
### 2. 项目启动
```sh
# 二选一
npm run serve
yarn serve
```
### 3. 项目打包
```sh
# 二选一
npm run build
yarn build
```
### 4. 使用lint检查并修复文件
```sh
# 二选一
npm run lint
yarn lint
```
### Customize configuration
See [Configuration Reference](https://cli.vuejs.org/config/).
## 二、代码功能清单
- d3初始化
- 数据解析
- 数据渲染
- 图查询更新视图
- 平移与缩放
- 文字显示
- 节点拖拽
- 鼠标浮动事件
- 鼠标单击事件
- 鼠标右键菜单(写一个d3插件)
- 图例交互事件
- 文字搜索
- 模式选择
- 关系文字和箭头的绘制与调整
- 节点编辑功能
- 3D图谱展示
## 三、代码修改说明
### 1. 代码结构
- **组件**存放在 `components` 文件夹
- `d3graph.vue` —— 2D图谱展示组件
- `threeGraph.vue` —— 3D图谱展示组件
- `gSearch.vue` —— 搜索组件,目前主要通过require代替后台请求
- **页面**存放在 `views` 文件夹
- `2dView.vue` —— 2D图谱展示页面
- `3dView.vue` —— 3D图谱展示页面
- **d3插件**存放在 `plugins` 文件夹
- `d3-context-menu.js` —— 右键菜单事件注册及回调函数
- `d3-context-menu.scss` —— 右键菜单样式文件
- **路由**存放在 `router` 文件夹
- `index.js` —— 路由较少,就2个页面
- **静态图数据**存放在 `data` 文件夹
- `store` 和 `assets` 文件夹暂时不用
### 2. 页面结构
页面通过组件分为不同功能模块:
1. `2dView.vue` — **2D图谱展示页面**
- `d3graph.vue`
- 2D图谱展示组件
- `gSearch.vue`
- 搜索组件
- 目前模拟后台请求,通过require代替
2. `3dView.vue` — **3D图谱展示页面**
- `threeGraph.vue`
- 3D图谱展示组件
- `gSearch.vue`
- 搜索组件
- 目前模拟后台请求,通过require代替
### 3. 在组件中修改代码,替换成自己构建的图谱
- 图数据JSON格式要求
在Neo4j图数据中,以 **p** 为键值对表示,每个 **p** 为一个查询关系。
按如下Cypher查询语句导出均可以展示:
```
MATCH p=(n:节点类型)-[r:关系类型]->() RETURN p limit 20
```
- `gSearch.vue`
模拟后台查询,分别在data和methods属性中修改静态图数据文件的路径
```js
data () {
return {
input: '',
mode: '1',
// 模拟后台请求到的json数据
data: require('../data/records.json'),
results: []
}
}
```
```js
methods: {
query () {
// 模拟后台查询时,图数据动态更新的情况(用静态文件暂时代替)
// console.log(typeof this.mode)
if (this.data.length <= 20) {
this.data = require('../data/top5.json')
} else {
this.data = require('../data/records.json')
}
this.$emit('getData', this.data)
},
// 省略其他函数...
}
```
- `d3graph.vue`
在data属性中修改映射,用于把标签名称转换为对应的中文名称
```js
// 定义节点属性名称及对应显示的中文名称
nodeObjMap: {
'address': '注册地址',
'captial': '注册资本',
'credit_code': '信用代码',
'name': '节点名称',
'setup_time': '注册日期'
}
```

- `2dView.vue`
在data属性中修改图例名称、节点标签、关系标签(标签保证和Neo4j图数据中对应)
```js
data () {
return {
// d3jsonParser()处理 json 后返回的结果
data: {
nodes: [],
links: []
},
names: ['企业', '贸易类型', '地区', '国家'],
// 节点和关系标签名称与图数据库保持一致
labels: ['Enterprise', 'Type', 'Region', 'Country'],
linkTypes: ['', 'type', 'locate', 'export']
}
}
```
- `3dView.vue `
同上
## 四、代码效果展示
分为2D、3D图谱展示两个页面:
1. 2D图谱展示

2. 3D图谱展示

## 四、关于新版d3与老版本的差异
### 1. d3.event被移除
- 老版本(v4)
```js
// 事件绑定部分
d3dom.append('g')
.attr("class", "texts")
.selectAll("text")
.data(nodes)
.enter()
// 省略处理部分,以下是拖拽事件的绑定
.call(d3.drag()
.on("start", dragstarted)
.on("drag", dragged)
.on("end", dragended)
)
```
```js
// 以drag代码为例,在v6中使用会报错
// 开始拖动并更新相应的点
function dragstarted(d) {
if (!d3.event.active) simulation.alphaTarget(0.3).restart();
d.fx = d.x;
d.fy = d.y;
}
// 拖动进行中
function dragged(d) {
d.fx = d3.event.x;
d.fy = d3.event.y;
}
// 拖动结束
function dragended(d) {
if (!d3.event.active) simulation.alphaTarget(0);
d.fx = null;
d.fy = null;
}
```
报错:`export 'event' (imported as 'd3') was not found in 'd3'`
- 新版本(v6)
```js
function started(event) {
var circle = d3.select(this).classed("dragging", true);
event.on("drag", dragged).on("end", ended);
function dragged(event, d) {
circle.raise().attr("cx", d.x = event.x).attr("cy", d.y = event.y);
}
function ended() {
circle.classed("dragging", false);
}
}
```
### 2. vue组件css不生效
原因:添加了scoped,其通过d3动态添加的节点css样式不生效
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
知识图谱是一种结构化的知识表达形式,它以图形的方式组织和存储了大量实体(如人、地点、事件等)及其相互关系。在知识图谱中,实体作为节点,实体之间的各种语义关联则通过边进行连接,形成了一个庞大的数据网络。 知识图谱的核心价值在于其能够精确、直观地表示复杂世界中的知识,并支持高效的知识查询与推理。例如,在搜索引擎中,知识图谱可以提升搜索结果的相关性和准确性,为用户提供直接的答案而非仅仅是网页链接。同时,知识图谱还能支撑高级的人工智能应用,比如问答系统、推荐系统、决策支持等领域。 构建知识图谱的过程通常包括数据抽取、知识融合、实体识别、关系抽取等多个步骤,涉及到自然语言处理、机器学习、数据库技术等多种技术手段。知识图谱的不断完善有助于实现从海量信息中挖掘深层次、有价值的知识,从而推动人工智能向着更加理解人类世界的智慧方向发展。 总之,知识图谱是一个大规模、多领域、多源异构知识集成的载体,是实现智能化信息系统的基础工具和关键基础设施,对于提升信息检索质量、推动智能应用研发具有重要作用。
资源推荐
资源详情
资源评论















收起资源包目录











































共 31 条
- 1
资源评论

- C杨HRZZ2024-07-12感谢资源主的分享,这个资源对我来说很有用,内容描述详尽,值得借鉴。
- 南风向轻玲2024-11-29感谢资源主的分享,这个资源对我来说很有用,内容描述详尽,值得借鉴。

JJJ69
- 粉丝: 6461
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 湖南软件公司市场推广策划方案.doc
- 脑机接口技术综述.doc
- 精品文档网络营销策划方案.docx
- 电子商务系统分析.ppt
- S120学习教程第五部分:应用 03 S120通过111报文来实现Basic Position功能
- 互联网+家装电商平台模式构想.ppt
- 2023年网络管理员培训讲义.doc
- 区综合行政执法局2021年度工作总结暨2022年智慧城市建设工作计划.docx
- 基于51单片机的数字频率计课程设计报告书.doc
- 精选计算机类个人自荐信三篇.pdf
- 高校信息化与核心竞争力研究.pptx
- 基于单片机SHT11温湿度传感器电路图于程序.doc
- 神经网络专题知识讲座.pptx
- 2023年9月计算机二级C语言笔试题及答案新版.doc
- 网络营销学院项目手册V2.0.doc
- 网站运营推广计划及方案.docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
