Vue与relation-graph:高效打造关系图的秘诀

这篇具有很好参考价值的文章主要介绍了Vue与relation-graph:高效打造关系图的秘诀。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

产品提需求啦,有一个需求就是实现一个功能:展现各个文件之间的调用关系,通过关系图的形式进行展示出来。

之前考虑使用antv x6实现此功能,但是考虑到只是展示的功能,也不需要进行交互,所以放弃使用antv x6,选择了更加简单的relation-graph插件。

先来看一个示例项目:

<template>
  <div>
    <div style="height: calc(100vh - 50px)">
      <RelationGraph
        ref="seeksRelationGraph"
        :options="graphOptions"
        :on-node-click="onNodeClick"
        :on-line-click="onLineClick"
      />
    </div>
  </div>
</template>
<script>
// relation-graph也支持在main.js文件中使用Vue.use(RelationGraph);这样,你就不需要下面这一行代码来引入了。
import RelationGraph from 'relation-graph'
export default {
  name: 'Demo',
  components: { RelationGraph },
  data() {
    return {
      graphOptions: {
        allowSwitchLineShape: true,
        allowSwitchJunctionPoint: true,
        defaultJunctionPoint: 'border'
        // 这里可以参考"Graph 图谱"中的参数进行设置
      }
    }
  },
  mounted() {
    this.showSeeksGraph()
  },
  methods: {
    showSeeksGraph() {
      const __graph_json_data = {
        rootId: 'a',
        nodes: [
          { id: 'a', text: 'A', borderColor: 'yellow' },
          { id: 'b', text: 'B', color: '#43a2f1', fontColor: 'yellow' },
          { id: 'c', text: 'C', nodeShape: 1, width: 80, height: 60 },
          { id: 'e', text: 'E', nodeShape: 0, width: 150, height: 150 }
        ],
        lines: [
          { from: 'a', to: 'b', text: '关系1', color: '#43a2f1' },
          { from: 'a', to: 'c', text: '关系2' },
          { from: 'a', to: 'e', text: '关系3' },
          { from: 'b', to: 'e', color: '#67C23A' }
        ]
      }
      // 以上数据中的node和link可以参考"Node节点"和"Link关系"中的参数进行配置 
      this.$refs.seeksRelationGraph.setJsonData(__graph_json_data, (seeksRGGraph) => {
        // Called when the relation-graph is completed 
      })
    },
    onNodeClick(nodeObject, $event) {
      console.log('onNodeClick:', nodeObject)
    },
    onLineClick(lineObject, $event) {
      console.log('onLineClick:', lineObject)
    }
  }
}
</script>

运行效果:
Vue与relation-graph:高效打造关系图的秘诀,# 前端实战,vue.js,前端,javascript
这里有一个需要注意的点是,如果你的vue版本低于2.6.12时,图谱会显示异常,图谱加载不完全甚至网页中出现undefined。这时我们只需要将我们的版本升级一下就可以。
我选择的是安装版本为2.6.14,升级完vue版本之后,记得要npm install重新安装一下依赖,不然会出现vue-template-compiler和vue版本不匹配也不能成功运行项目的问题。

Vue与relation-graph:高效打造关系图的秘诀,# 前端实战,vue.js,前端,javascript

npm install vue@2.6.14 

接下来进入我们的正题,详细介绍一下开发过程。

1.引入relation-graph

// 注意:relation-graph支持Vue2、Vue3、React, 但引入的包名称都是【relation-graph】
npm install --save relation-graph

插件安装完成之后,需要在我们开发的页面中引入和注册

import SeeksRelationGraph from 'relation-graph'
components: { SeeksRelationGraph },

2.初始化设置

然后就是一些初始化的设置

 <SeeksRelationGraph
        ref="seeksRelationGraph"
        :options="graphOptions"
        :on-node-click="nodeClick"
      />

其中options就是图谱配置,一个对象,里面包含了具体的选项:
如果你的需求是单纯的展示关系图,不需要进行节点拖动操作的,可以将拖动禁掉

// 禁用拖拽
        disableDragNode: true,

其中layouts布局设置,

  • layoutName:布局方式(tree树状布局/center中心布局/force自动布局)
  • layoutClassName: 当使用这个布局时,会将此样式添加到图谱上,这里就是设置我们自定义的样式
  • min_per_width:节点距离限制:节点之间横向距离最小值
  • max_per_width:节点距离限制:节点之间横向距离最大值
  • min_per_height:节点距离限制:节点之间纵向距离最小值
  • max_per_height:节点距离限制:节点之间纵向距离最大值

    节点之间的最小距离建议不要太小了,如果节点内容比较多导致节点比较大,很容易导致节点之间重叠。
        layouts: [
          {
            label: '中心',
            layoutName: 'tree',
            layoutClassName: 'seeks-layout-center',
            defaultNodeShape: 0,
            from: 'left',
            // 通过这4个属性来调整 tree-层级距离&节点距离
            min_per_width: '300',
            max_per_width: '300',
            min_per_height: '40',
            max_per_height: '60',
          },
        ],

除此之外我们还可以为我们的图谱添加工具栏,对应的图谱配置分别为:

  • allowShowMiniToolBar:是否显示工具栏
  • allowShowRefreshButton:是否在工具栏中显示【刷新】按钮
  • allowShowDownloadButton: 是否在工具栏中显示【下载图片】按钮
  • allowSwitchLineShape:是否在工具栏中显示切换线条形状的按钮
  • allowSwitchJunctionPoint:是否在工具栏中显示切换连接点位置的按钮
    Vue与relation-graph:高效打造关系图的秘诀,# 前端实战,vue.js,前端,javascript
    上面列举的都是一些常用的配置和布局设置,除此之外官方还提供了很多其他的配置,详细参考官方文档

3、数据格式

通过设置一个json对象的nodes、lines、rootId来定义图谱中要展示的节点、关系线、根节点

     const __graph_json_data = {
         rootId: 'a',
         nodes: [
           { id: 'a', text: 'A', borderColor: 'yellow' },
           { id: 'b', text: 'B', color: '#43a2f1', fontColor: 'yellow' },
           { id: 'c', text: 'C', nodeShape: 1, width: 80, height: 60 },
           { id: 'e', text: 'E', nodeShape: 0, width: 150, height: 150 }
         ],
         lines: [
           { from: 'a', to: 'b', text: '关系1', color: '#43a2f1' },
           { from: 'a', to: 'c', text: '关系2' },
           { from: 'a', to: 'e', text: '关系3' },
           { from: 'b', to: 'e', color: '#67C23A' }
         ]
       }
      

nodes定义的是节点数据,lines定义的是关系线。

node节点

我们可以定义普通的节点,不需要进行样式的设置和定义,官方已经为我们定义好了。

        {
            id: 'N16',
            color: '#4ea2f0',
            text: '123311312'
          },

不过我们可以设置节点id,节点名称text,节点背景颜色color,这里与css有所不同,字体颜色是fontColor,节点形状nodeShape(0圆形,1矩形),
除了使用官方自定义的节点之外,我们还可以自定义节点,是通过html的形式进行定义。

          {
            id: 'N15',
            text: this.A.path,
            color: '#4ea2f0',
            width: 100,
            height: 100,
            html: `
            <div class='TIME' @click='nodeClick'>
                  <div>名称:${this.A.name}</div>
                  <div>掘金:${this.A.path}</div>
                  <div>QQ:${this.A.qq}</div>
              </div>
            `
          },

其中A是在data中定义的一个对象

     A: {
        name: '静Yu',
        path: 'https://juejin.cn/user/2225839800062215',
        qq: '789789798',
      },
lines关系线

from和to对应的都是节点的id,除此之外还可以在连接线上添加文字text,线条粗细lineWidth,线条颜色
color等等

        links: [
          { from: 'N1', to: 'N15' },
          { from: 'N15', to: 'N16' },
          { from: 'N15', to: 'N17' },
          { from: 'N15', to: 'N18' },
          { from: 'N15', to: 'N19' },
          { from: 'N18', to: 'N20' },
        ],

4.Events事件

官方为我们提供了五种触发事件

  • on-node-click点击节点事件
  • on-node-expand展开节点事件
  • on-node-collapse收缩节点事件
  • on-line-click点击线条事件
  • on-image-download当点击下载图片按钮时触发

较为常用的就是点击节点和线条触发的事件

  <SeeksRelationGraph
        ref="seeksRelationGraph"
        :options="graphOptions"
        :on-node-click="nodeClick"
   />
   nodeClick(nodeObject) {
      console.log(nodeObject)
   }

参数会返回节点的各种信息供我们使用
Vue与relation-graph:高效打造关系图的秘诀,# 前端实战,vue.js,前端,javascript

5.小结

在这篇文章中,我们深入探讨了如何使用Vue和relation-graph高效打造关系图。我们详细介绍了数据准备、关系映射、点击事件等关键步骤。通过这些技巧和解决方案,我们可以更好地利用Vue和relation-graph库来创建直观且易于维护的关系图。
总之,Vue与relation-graph的结合为我们提供了一种强大且灵活的方式,以高效地构建各种复杂的关系图。通过掌握这些秘诀,我们可以更好地利用Vue和relation-graph库,轻松打造出高质量的关系图应用程序,从而更好地满足各种需求。文章来源地址https://www.toymoban.com/news/detail-718639.html

到了这里,关于Vue与relation-graph:高效打造关系图的秘诀的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Echarts graph关系图的使用(入门级)

    2023.1.7今天我学习了如何使用echarts graph关系图,效果如: 首先是给容器设置id,宽高 然后是  

    2024年02月15日
    浏览(43)
  • 在vue中使用echarts以及简单关系图的点击事件

    在Vue项目中打开终端执行命令: 下载后在package.json文件中可以看到下载的Echarts版本: 在需要使用Echarts图表的页面中导入: 如果多个地方使用的话可以通过全局引入: 在需要用到echarts的地方设置一个有宽高的div盒子 定义echarts关系图的数据 在methods中定义实例化echarts对象的

    2024年02月08日
    浏览(37)
  • Relation-Aware Graph Transformer for SQL-to-Text Generation

    SQL2Text 是一项将 SQL 查询映射到相应的自然语言问题的任务。之前的工作将 SQL 表示为稀疏图,并利用 graph-to-sequence 模型来生成问题,其中每个节点只能与 k 跳节点通信。由于无法捕获长期且缺乏特定于 SQL 的关系,这样的模型在适应更复杂的 SQL 查询时将会退化。为了解决这

    2024年01月17日
    浏览(51)
  • 论文阅读《ICDE2023:Relational Message Passing for Fully Inductive Knowledge Graph Completion》

    论文链接 工作简介 在知识图谱补全 (KGC) 中,预测涉及新兴实体和 / 或关系的三元组, 这是在学习 KG 嵌入时看不到的,已成为一个关键挑战。 带有消息传递的子图推理是一个很有前途和流行的解决方案。 最近的一些方法已经取得了很好的性能,但它们 (1) 通常只能预测单独

    2024年02月07日
    浏览(41)
  • 【论文阅读】Relation-Aware Graph Transformer for SQL-to-Text Generation

    SQL2Text 是一项将 SQL 查询映射到相应的自然语言问题的任务。之前的工作将 SQL 表示为稀疏图,并利用 graph-to-sequence 模型来生成问题,其中每个节点只能与 k 跳节点通信。由于无法捕获长期且缺乏特定于 SQL 的关系,这样的模型在适应更复杂的 SQL 查询时将会退化。为了解决这

    2024年02月20日
    浏览(49)
  • Spring Boot后端+Vue前端:打造高效二手车交易系统

    作者介绍: ✌️大厂全栈码农|毕设实战开发,专注于大学生项目实战开发、讲解和毕业答疑辅导。 🍅 获取源码联系方式请查看文末 🍅  推荐订阅精彩专栏 👇🏻 避免错过下次更新 Springboot项目精选实战案例 更多项目: CSDN主页YAML墨韵 学如逆水行舟,不进则退。学习如赶

    2024年04月28日
    浏览(63)
  • Webstorm 舒适高效配置,打造提高生产率环境 (html, vue, uniapp)

    目录 1. 主题护眼配置 2. 字体 JetBrains Mono 3. webStrom 好用插件-大大提高生产效率插件 3.1图标插件 3.2 Git提交记录 3.3彩色括号 3.4 高亮括号 3.5 右侧代码小地图 3.6 正则插件 3.7 activate-power-mode-x 3.8 Tabnine AI Code Completion 3.9 ESLint代码检查插件 3.10 BrowseWordAtCaret高亮选中所有相同词

    2024年02月08日
    浏览(48)
  • Django中使用反向关系名称(related_name)解决由“多对多”关系引起的字段名字冲突问题引起的迁移命令报错。

    当在模型中为关系字段添加了 related_name 参数后,您可以使用该参数指定的名称来引用反向关系。下面是一个简单的例子来说明如何引用反向关系。 假设您有以下两个模型: 在上面的例子中, Book 模型有一个外键字段 author ,它关联到 Author 模型。通过添加 related_name=\\\'books\\\' 参

    2024年02月16日
    浏览(47)
  • [实体关系抽取|顶刊论文]OneRel:Relational Triple Extraction: One Step is Enough

    2022.5.11 |IJCAI-2022|华中科技大学|2022年SOTA| 原文链接 过去的步骤: 寻找头尾实体的边界位置(实体识别) 将特定令牌串联成三元组(关系分类) 存在误差累计问题,每个实体边界识别误差会累积到最终的组合三元组中 论文中的方法: 先通过枚举句子中的令牌序列生成

    2024年02月12日
    浏览(53)
  • [实体关系抽取|顶刊论文]UniRel:Unified Representation and Interaction for Joint Relational Triple Extraction

    2022.11.16|EMNLP 2022|中国科学技术大学 |原文链接|源码链接 解决实体和关系异构表示问题 解决实体-实体交互和实体-关系交互异构建模问题 通过一个串联的自然语言序列联合编码统一实体和关系的表示,同时使用一个交互映射系统来统一交互 过去(如CasRel、PRGC)都在 关

    2024年02月04日
    浏览(105)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包