Vue2.x + Echarts实现知识图谱数据渲染

news2025/1/17 2:52:59

代码案例数据写死了,后端Java可使用SpringBoot+Neo4j查询数据返回。

<template>
  <div id="myChart"></div>
</template>

<style>
#myChart {
  width: 100%;
  height: 1000px;
}
</style>
<script>


export default {
  name: "HelloWorld",
  data() {
    return {
      msg: "Welcome to Your Vue.js App",
      initData:
      {
        "name": "科目全部",
        "className": "全年级",
        "students": [],
        "subjects": [
          {
            "name": "语文",
            "className": "高一",
            "students": [
              {
                "name": "张弛1",
                "age": 30,
                "students": [
                  {
                    "name": "蒋龙",
                    "age": 20
                  }
                ]
              },
              {
                "name": "蒋龙2",
                "age": 20
              },
              {
                "name": "刘波",
                "age": 28,
                "students": [
                  {
                    "name": "龙傲天",
                    "age": 25
                  }
                ]
              },
              {
                "name": "龙傲天3",
                "age": 25
              },
              {
                "name": "李豆豆",
                "age": 27
              }
            ]
          },
          {
            "name": "数学",
            "className": "高一",
            "students": [
              {
                "name": "JACK",
                "age": 30
              },
              {
                "name": "DRAONA",
                "age": 20
              },
              {
                "name": "CFAIDS",
                "age": 28
              }
            ]
          },
          {
            "name": "英语",
            "className": "高一",
            "students": [
              {
                "name": "IIODS",
                "age": 30,
                "students": [
                  {
                    "name": "龙傲天4",
                    "age": 25
                  }
                ]
              },
              {
                "name": "DWQQQS",
                "age": 20
              },
              {
                "name": "ADFAWWAA",
                "age": 28
              }
            ]
          },
          {
            "name": "历史",
            "className": "高一",
            "students": [
              {
                "name": "CFRRRES",
                "age": 20
              },
              {
                "name": "WDFFAAW",
                "age": 28
              }
            ]
          },
          {
            "name": "物理",
            "className": "高一",
            "students": [
              {
                "name": "SQWAAAD",
                "age": 20
              },
              {
                "name": "FSCCCQ",
                "age": 28
              }
            ]
          },
          {
            "name": "政治",
            "className": "高一",
            "students": [
              {
                "name": "KOUSDA",
                "age": 20
              },
              {
                "name": "CFGRAAW",
                "age": 28
              }
            ]
          },
          {
            "name": "化学",
            "className": "高一",
            "students": [
              {
                "name": "DFESQW",
                "age": 20
              },
              {
                "name": "TREWWS",
                "age": 28
              }
            ]
          }
        ]
      },
      categories: [],
      resData: [],
      graphData: [],
      graphLinks: [],
    };
  },
  mounted() {
    for (var i = 0; i < 2; i++) {
      this.categories[i] = {
        name: "类目" + i,
      };
    }
    this.loadData();
    //this.drawLine();
  },
  methods: {
    drawLine() {
      let myChart = this.$echarts.init(document.getElementById("myChart"));
      myChart.setOption({
        title: {
          text: "ECharts 关系图",
        },
        tooltip: {},

        series: [
          {
            type: "graph", // 类型:关系图
            layout: "force", //图的布局,类型为力导图
            symbolSize: 40, // 调整节点的大小
            roam: true, // 是否开启鼠标缩放和平移漫游。默认不开启。如果只想要开启缩放或者平移,可以设置成 'scale' 或者 'move'。设置成 true 为都开启
            edgeSymbol: ["circle", "arrow"],
            edgeSymbolSize: [2, 10],
            edgeLabel: {
              normal: {
                textStyle: {
                  fontSize: 10,
                },
              },
            },
            force: {
              repulsion: 2500,
              edgeLength: [10, 50],
            },
            draggable: true,
            lineStyle: {
              normal: {
                width: 2,
                // color: "#4b565b",
              },
            },
            label: {
              normal: {
                show: true,
                textStyle: {},
              },
            },
            data: this.graphData,
            links: this.graphLinks,
            categories: this.categories,
          },
        ],
      });
    },
    loadData() {
      let me = this;
      me.resData = this.initData;
      //主节点,第一父节点,只有一个
      me.graphData.push({
        name: me.resData.name,
        des: me.resData.className,
        symbolSize: 80,
        category: 2,
      });

      //所有第二节点,科目
      let dataSubjects = me.resData.subjects;
      if (dataSubjects.length > 0) {
        for (var b = 0; b < dataSubjects.length; b++) {
          me.graphData.push({
            name: dataSubjects[b].name,
            des: dataSubjects[b].className,
            symbolSize: 80,
            category: 1,
          });
          me.graphLinks.push({
            source: dataSubjects[b].name,
            target: me.resData.name,
            label: {
              show: true
            },
          });
          let studentsData = dataSubjects[b].students;
          this.setGraph(me, studentsData, dataSubjects[b])
        }
      }
      me.drawLine();
    },

    //递归
    setGraph(me, studentsData, dataIncludes) {
      if (studentsData != undefined && studentsData.length > 0) {
        for (var c = 0; c < studentsData.length; c++) {
          me.graphData.push({
            name: studentsData[c].name ,
            des: studentsData[c].age,
            symbolSize: 80,

          });
          me.graphLinks.push({
            source: dataIncludes.name,
            target: studentsData[c].name,
            label: {
              show: true
            },
          });
          if (studentsData[c].students != undefined) {
            console.log(studentsData[c]);
            this.setGraph(me, studentsData[c].students, studentsData[c])
          }
        }
      }
    }
  },
};
</script>

实现效果:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/117177.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

视频号小店是什么?如何开通视频号小店API?

微信视频号于2022年7月正式推出“视频号小店“服务&#xff0c;为商家提供商品信息服务、商品交易&#xff0c;支持商家在视频号运营电商。目前视频号小店有个体工商户或企业资质的商家进行开店&#xff0c;企业店需要企业营业执照认证、个体工商户则需要个体工商户营业执照认证…

Android设计模式详解之模板方法模式

前言 定义&#xff1a;定义一个操作中的算法的框架&#xff0c;而将一些步骤延迟到子类中&#xff0c;使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤&#xff1b; 使用场景&#xff1a; 多个子类有公有的方法&#xff0c;并且逻辑基本相同时&#xff1b;…

Linux环境下挂载外接硬盘

一. 前言 调试ARTIK过程中&#xff0c;首次外接硬盘不会自动挂载&#xff0c;需要将硬盘挂载到系统文件夹下方能读取硬盘内容&#xff0c;因此对于Ubuntu系统下挂载硬盘和开机自动挂载外接硬盘配置的方法进行总结。 二. 挂载外接硬盘步骤 通过命令 fdisk -l 查看硬盘资源信息…

Hive+Spark离线数仓工业项目--ODS层及DWD层构建(2)

ODS层构建&#xff1a;代码导入 目标&#xff1a;实现Python项目代码的导入及配置 实施 Oracle本地驱动目录**&#xff1a;将提供的**instantclient_12_2**目录放入D盘的根目录下 PyHive本地连接配置&#xff1a;将提供的CMU目录放入C盘的根目录下 auto_create_hive_table包…

Java中的Map集合体系

Map集合体系Map集合的概述Map集合体系特点Map集合常用APIMap集合的遍历方式&#xff1a;方式一&#xff1a;键找值方式二&#xff1a;键值对方式三&#xff1a;lambda表达式Map集合的实现类HashMapMap集合的实现类TreeMap集合嵌套Map集合的概述 Map集合概述和使用&#xff1a;…

Java 基础:变量、操作符、代码块和控制流

目录 一、变量&#xff1a;Variables 1、基本数据类型 2、数组 二、操作符/运算符 Operators 三、表达式、语句和代码块 四、程序控制流 一、变量&#xff1a;Variables Java 定义了以下几种变量&#xff1a; 实例变量/成员变量&#xff08;非静态字段&#xff09;&…

Docker+NETCore系列文章(五、推送自制镜像到Docker Hub、阿里云镜像仓库)

推送镜像到Docker Hub镜像仓库 1、访问Docker Hub&#xff1a;https://hub.docker.com/&#xff0c;注册并登陆Docker。 2、使用docker pull hello-world命令拉取hello-workld镜像。 [rootVM-0-6-centos ~]# docker pull hello-world Using default tag: latest latest: Pul…

微服务架构 VS 单体架构

在软件行业&#xff0c;微服务架构是一种重要的发展趋势。这一趋势&#xff0c;不仅仅是对企业内的IT信息系统建设&#xff0c;甚至在企业向数字化转型方面&#xff0c;都有着深远的影响。微服务架构与传统的单体软件架构代表着IT产业处理软件开发方式的一个根本性转变&#xf…

【C++11】异常

&#x1f308;1.C语言传统处理错误的方式 在讲解C的异常机制之前我们先来复习一下传统的处理错误的方式。 传统的错误处理机制&#xff1a; 1.终止程序、如assert , 缺陷&#xff1a;用户难以接受。如发生内存错误&#xff0c;除0错误时就会终止程序。2.返回错误码、缺陷&…

Apache POI导入导出excel文件实战

文章目录前言技术栈1、引入依赖2、导入代码实现3、导出代码实现3.1、准备导出文件模板3.2、导出代码实现4、代码实现解释5、常见问题前言 这两天公司项目业务提出需求&#xff0c;要求在前端上传excel文件然后解析展示&#xff0c;因此写篇文章记录一下实现。 技术栈 spring…

抖音小程序实践三:接口开发指南

通过官方文档可以更系统的学习到所有的接口&#xff0c;我这边罗列一下我自己用到测试过的接口供大家参考。 前端-小程序对接官方文档&#xff1a;https://microapp.bytedance.com/docs/zh-CN/mini-app/develop/api/open-interface/user-information/tt-get-user-info服务端-小…

个人黄金准备与须知

投资黄金可以为自己的资产保值&#xff0c;也可以福泽后人&#xff0c;因此十分符合国人传统文化特点和理财智慧。可是现在市场中可以投资黄金的平台那么多&#xff0c;投资者必须先认真“调查研究”&#xff0c;才能“去芜存菁”&#xff0c;选到值得托付的好平台。 其实投资者…

为笔记本电脑绑定公网IP随时随地BT做种完整方案(frp加v2ray配合比特彗星点亮绿灯)

BT做种需要拥有固定的IP(IPV4)和端口&#xff0c;如果想在拥有固定IP的服务端做种&#xff0c;可以直接参考前一期https://www.v2fy.com/p/2022-12-25-bt-1671963832000/ &#xff0c;如果想使用笔记本随时随地做种&#xff0c;那就需要拥有固定IP的服务器进行流量转发。 本篇…

富特科技在创业板IPO过会:计划募资约9亿元,股东包括小米等

近日&#xff0c;深圳证券交易所披露的信息显示&#xff0c;浙江富特科技股份有限公司&#xff08;下称“富特科技”&#xff09;获得创业板上市委会议审核通过。据贝多财经了解&#xff0c;富特科技于2022年6月16日在创业板递交招股书。 本次冲刺创业板上市&#xff0c;富特科…

【聆思CSK6 视觉AI开发套件试用】头肩、手势识别体验与PWM舵机控制

本篇文章来自极术社区与聆思科技组织的CSK6 视觉AI开发套件活动&#xff0c;更多开发板试用活动请关注极术社区网站。作者&#xff1a;酷电玩家 环境搭建 官方文档详细环境搭建教程&#xff1a;环境搭建 1、下载Git进行安装。 2、安装lisa zep工具&#xff0c;并初始化 CSK6…

洛谷千题详解 | P1026 [NOIP2001 提高组] 统计单词个数【C++、Java语言】

博主主页&#xff1a;Yu仙笙 专栏地址&#xff1a;洛谷千题详解 目录 题目描述 输入格式 输出格式 输入输出样例 解析&#xff1a; C源码&#xff1a; Java源码&#xff1a; C源码2&#xff1a; ----------------------------------------------------------------------------…

vector模板的简易实现

这篇文章&#xff0c;我们模拟一下STL里面的vector的实现。但是会简化一些内容&#xff0c;让大家能够更好的理解。模拟实现的目的不是为了更好的造轮子&#xff0c;而是为了更好的理解这些容器。 文章目录1. 成员变量2. push_back函数3. reserve函数4. pop_back函数和下标运算…

QT 多线程中使用QCanBusDevice进行PCAN通讯时,无法正常发出数据

QT 多线程中使用QCanBusDevice进行PCAN通讯时&#xff0c;无法正常发出数据 前言 我一开始的代码逻辑是&#xff0c;PCAN开启、关闭、发送、接收这些功能整合在一个工具类中&#xff0c;这个工具类的对象是在主线程创建的&#xff0c;然后我有一个要循环定时发送的功能是独立…

与企企通强强联手!哈尔斯二期数字化采购项目正式启动

近日&#xff0c;浙江哈尔斯真空器皿股份有限公司&#xff08;以下简称“哈尔斯”&#xff09;联合企企通举办二期数字化采购项目启动会&#xff0c;旨在助力哈尔斯实现采购数字化全面升级&#xff0c;提升自主品牌竞争力。会上&#xff0c;双方就该项目的建设方案、项目资源、…

铝合金表面处理废水除铝工艺

铝型材表面处理用水量大&#xff0c;产生废水多&#xff0c;废水中有害物质持续排放。如不加以处理必将污染环境。同时伴随着我国对排污量的征税&#xff0c;也会增加企业的成本和负担。因此&#xff0c;从企业的社会责任和效益两方面考虑&#xff0c;进行废水处理是必须和必要…