当前位置:   article > 正文

利用echarts模拟Neo4j画图_vue neo4j echarts

vue neo4j echarts

为了避免在前端直连数据库的问题,采用第三方库echarts进行模拟:

快速安装echarts环境:

快速上手 - 使用手册 - Apache ECharts

  1. <template>
  2. <div id="myChart"></div>
  3. </template>
  4. <style>
  5. #myChart {
  6. width: 100%;
  7. height: 100%;
  8. }
  9. </style>
  10. <script>
  11. export default {
  12. name: "Neo4j",
  13. data() {
  14. return {
  15. msg: "Welcome to Your Vue.js App",
  16. initData: {
  17. name: "科目全部",
  18. className: "全年级",
  19. students: [],
  20. subjects: [
  21. {
  22. name: "语文",
  23. className: "高一",
  24. students: [
  25. {
  26. name: "张弛1",
  27. age: 30,
  28. students: [
  29. {
  30. name: "蒋龙",
  31. age: 20,
  32. },
  33. ],
  34. },
  35. {
  36. name: "蒋龙2",
  37. age: 20,
  38. },
  39. {
  40. name: "刘波",
  41. age: 28,
  42. students: [
  43. {
  44. name: "龙傲天",
  45. age: 25,
  46. },
  47. ],
  48. },
  49. {
  50. name: "龙傲天3",
  51. age: 25,
  52. },
  53. {
  54. name: "李豆豆",
  55. age: 27,
  56. },
  57. ],
  58. },
  59. ],
  60. },
  61. categories: [],
  62. resData: [],
  63. graphData: [],
  64. graphLinks: [],
  65. };
  66. },
  67. mounted() {
  68. for (var i = 0; i < 2; i++) {
  69. this.categories[i] = {
  70. name: "类目" + i,
  71. };
  72. }
  73. this.loadData();
  74. //this.drawLine();
  75. },
  76. methods: {
  77. drawLine() {
  78. let myChart = this.$echarts.init(document.getElementById("myChart"));
  79. myChart.setOption({
  80. title: {
  81. text: "案例分析图谱",
  82. },
  83. tooltip: {},
  84. series: [
  85. {
  86. type: "graph", // 类型:关系图
  87. layout: "force", //图的布局,类型为力导图
  88. symbolSize: 40, // 调整节点的大小
  89. roam: true, // 是否开启鼠标缩放和平移漫游。默认不开启。如果只想要开启缩放或者平移,可以设置成 'scale' 或者 'move'。设置成 true 为都开启
  90. edgeSymbol: ["circle", "arrow"],
  91. edgeSymbolSize: [2, 10],
  92. edgeLabel: {
  93. normal: {
  94. textStyle: {
  95. fontSize: 10,
  96. },
  97. },
  98. },
  99. force: {
  100. repulsion: 2500,
  101. edgeLength: [10, 50],
  102. },
  103. draggable: true,
  104. lineStyle: {
  105. normal: {
  106. width: 2,
  107. // color: "#4b565b",
  108. },
  109. },
  110. label: {
  111. normal: {
  112. show: true,
  113. textStyle: {},
  114. },
  115. },
  116. data: this.graphData,
  117. links: this.graphLinks,
  118. categories: this.categories,
  119. },
  120. ],
  121. });
  122. },
  123. loadData() {
  124. let me = this;
  125. me.resData = this.initData;
  126. //主节点,第一父节点,只有一个
  127. me.graphData.push({
  128. name: me.resData.name,
  129. des: me.resData.className,
  130. symbolSize: 80,
  131. category: 2,
  132. });
  133. //所有第二节点,科目
  134. let dataSubjects = me.resData.subjects;
  135. if (dataSubjects.length > 0) {
  136. for (var b = 0; b < dataSubjects.length; b++) {
  137. me.graphData.push({
  138. name: dataSubjects[b].name,
  139. des: dataSubjects[b].className,
  140. symbolSize: 80,
  141. category: 1,
  142. });
  143. me.graphLinks.push({
  144. source: dataSubjects[b].name,
  145. target: me.resData.name,
  146. label: {
  147. show: true,
  148. },
  149. });
  150. let studentsData = dataSubjects[b].students;
  151. this.setGraph(me, studentsData, dataSubjects[b]);
  152. }
  153. }
  154. me.drawLine();
  155. },
  156. //递归
  157. setGraph(me, studentsData, dataIncludes) {
  158. if (studentsData != undefined && studentsData.length > 0) {
  159. for (var c = 0; c < studentsData.length; c++) {
  160. me.graphData.push({
  161. name: studentsData[c].name,
  162. des: studentsData[c].age,
  163. symbolSize: 80,
  164. });
  165. me.graphLinks.push({
  166. source: dataIncludes.name,
  167. target: studentsData[c].name,
  168. label: {
  169. show: true,
  170. },
  171. });
  172. if (studentsData[c].students != undefined) {
  173. console.log(studentsData[c]);
  174. this.setGraph(me, studentsData[c].students, studentsData[c]);
  175. }
  176. }
  177. }
  178. },
  179. },
  180. };
  181. </script>

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/人工智能uu/article/detail/904220
推荐阅读
相关标签
  

闽ICP备14008679号