搜尋
首頁web前端js教程echarts滑鼠覆蓋高亮顯示節點關係數實現步驟

這次帶給大家echarts滑鼠覆蓋高亮顯示節點關係數實現步驟,echarts滑鼠覆蓋高亮顯示節點關係數實現的注意事項有哪些,下面就是實戰案例,一起來看一下。

本文在echart自帶的focusNodeAdjacency屬性上進行修改。

1、效果

先上效果,原來是滑鼠覆蓋之後只顯示節點名稱不顯示關係名稱。

已修改後可以既顯示節點名稱又顯示(自訂的)關係名稱。

2、程式碼

#html部分就這樣。

<p></p>

js程式碼,使用了jquery和echarts.js,用的是原始碼那版,因為待會要進原始碼修改…

echarts.js下載位址

其實js程式碼和echart官網demo的程式碼完全沒區別…

普通的力圖設置,只要加上focusNodeAdjacency : true即可。

$(function() {
 showChart();
});
var myChart;
option = {
 title : {
 text : '示例'
 },
 animationDurationUpdate : 1500,
 animationEasingUpdate : 'quinticInOut',
 series : [ {
 type : 'graph',
 layout : 'force',
 //data和edges里的内容在之后动态添加
 data : [],
 edges : [],
 //这个label管的是data的label
 label : {
  emphasis : {
  position : 'right',
  show : true
  }
 },
 force : {
  repulsion : 1000
 },
 roam : true,
 //将指定的节点以及其所有邻接节点高亮。
 focusNodeAdjacency : true,
 lineStyle : {
  normal : {
  width : 0.5,
  curveness : 0.3,
  opacity : 0.7
  }
 },
 draggable : true
 } ]
};
function showChart() {
 myChart = echarts.init(document.getElementById('main'));
 myChart.showLoading();
 $.ajax({
 //我用struts2做了个小后台,这个url就是里面的一个action
 url : 'echartsDisplay',
 type : 'POST',
 data : "{}",
 dataType : 'json',
 success : function(data) {
  myChart.hideLoading();
  //data的结构在下面有截图,可以一一对应
  option.series[0].data = data.nodes.map(function(node) {
  return {
   name : node.name,
   itemStyle : {
   normal : {
    color : node.color
   }
   },
   symbolSize : node.size,
  };
  });
  option.series[0].edges = data.links.map(function(edge) {
  return {
   source : edge.source,
   target : edge.target,
   attribute : edge.value
   //除了api中规定的参数,也可以使用一些自定义的参数,这里的attribute就是自定义的。这个参数在改源码时会用到。
  };
  });
  myChart.setOption(option, true);
 },
 error : function(errorMsg) {
  alert("请求数据失败!");
 }
 });
};

呼叫介面傳回的data結構和內容如下:

#nodes表示節點,放到option.series[0].data裡。

nodes有三個參數,color表示節點的顏色,name為節點的名稱(標籤),size為節點的大小。

links表示關係,放到option.series[0].edges裡。

links有三個參數source為關係的起點(吧),target為關係的終點(吧),value是關係名稱(標籤),在edges裡放到attribute參數裡。

要注意的是,要實現這種效果,一定不能在edges裡為關係設定label參數。

3、修改原始碼中的focusNodeAdjacency方法

很慚愧,因為我沒在echart的api裡找到能直接實現那種效果的方法,只能去echarts的源碼裡改了。

在echarts.js裡搜一下focusNodeAdjacency很快就能找到以下內容,然後只要加入下面有註解的三行程式碼,就能實現本文顯示節點和關係名稱的效果了。

focusNodeAdjacency: function (seriesModel, ecModel, api, payload) {
 var data = this._model.getData();
 var dataIndex = payload.dataIndex;
 var el = data.getItemGraphicEl(dataIndex);
 if (!el) {
 return;
 }
 var graph = data.graph;
 var dataType = el.dataType;
 function fadeOutItem(item, opacityPath) {
 var opacity = getItemOpacity(item, opacityPath);
 var el = item.getGraphicEl();
 if (opacity == null) {
opacity = 1;
 }
 el.traverse(function (child) {
child.trigger('normal');
if (child.type !== 'group') {
 child.setStyle('opacity', opacity * 0.1);
}
 });
 }
 function fadeInItem(item, opacityPath) {
 var opacity = getItemOpacity(item, opacityPath);
 var el = item.getGraphicEl();
 el.traverse(function (child) {
child.trigger('emphasis');
/**
* 如果当前child是关系,显示标签,标签内容自定。
* 使用item.getModel().get('xxx'),将xxx修改为对应的参数名称,
* 可获得自带及自定义的所有内容。
* 这里get('attribute')的attribute为edge中自定义的参数。
*/
if(child.type =='ec-line'){
 child.setStyle('text',item.getModel().get('attribute'));
}
/**
* 结束,这里就增加上面两句。
*/
if (child.type !== 'group') {
 child.setStyle('opacity', opacity);
}
 });
 }
 if (dataIndex !== null && dataType !== 'edge') {
 graph.eachNode(function (node) {
fadeOutItem(node, nodeOpacityPath);
 });
 graph.eachEdge(function (edge) {
fadeOutItem(edge, lineOpacityPath);
 });
 var node = graph.getNodeByIndex(dataIndex);
 fadeInItem(node, nodeOpacityPath);
 zrUtil.each(node.edges, function (edge) {
if (edge.dataIndex <p>我相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章! </p><p>推薦閱讀:</p><p style="text-align: left;"><a href="http://www.php.cn/js-tutorial-395989.html" target="_blank">vue1與vue2取得dom元素步驟詳解</a></p><p style="text-align: left;"><a href="http://www.php.cn/js-tutorial-395997.html" target="_blank">vue快速複製內容到貼上簿(附程式碼)</a><br></p>

以上是echarts滑鼠覆蓋高亮顯示節點關係數實現步驟的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
ECharts和Java接口:如何实现统计图表数据导出与分享ECharts和Java接口:如何实现统计图表数据导出与分享Dec 17, 2023 am 08:44 AM

ECharts是一款功能强大、灵活可定制的开源图表库,可用于数据可视化和大屏展示。在大数据时代,统计图表的数据导出和分享功能变得越来越重要。本文将介绍如何通过Java接口实现ECharts的统计图表数据导出和分享功能,并提供具体的代码示例。一、ECharts简介ECharts是百度开源的一款基于JavaScript和Canvas的数据可视化库,具有丰富的图表

使用PHP和ECharts创建可视化图表和报表使用PHP和ECharts创建可视化图表和报表May 10, 2023 pm 10:21 PM

随着大数据时代的来临,数据可视化成为企业决策的重要工具。千奇百怪的数据可视化工具层出不穷,其中ECharts以其强大的功能和良好的用户体验受到了广泛的关注和应用。而PHP作为一种主流的服务器端语言,也提供了丰富的数据处理和图表展示功能。本文将介绍如何使用PHP和ECharts创建可视化图表和报表。ECharts简介ECharts是一个开源的可视化图表库,它由

ECharts入门指南:如何使用EChartsECharts入门指南:如何使用EChartsDec 17, 2023 am 09:26 AM

ECharts入门指南:如何使用ECharts,需要具体代码示例ECharts是一款基于JavaScript的数据可视化库,通过使用ECharts,用户可以轻松地展示各种各样的图表,如折线图、柱状图、饼图等等。本文将为您介绍如何使用ECharts,并提供详细的代码示例。安装ECharts要使用ECharts,您首先需要安装它。您可以从ECharts官网htt

vue3怎么封装ECharts组件vue3怎么封装ECharts组件May 20, 2023 pm 03:22 PM

一、前言前端开发需要经常使用ECharts图表渲染数据信息,在一个项目中我们经常需要使用多个图表,选择封装ECharts组件复用的方式可以减少代码量,增加开发效率。二、封装ECharts组件为什么要封装组件避免重复的工作量,提升复用性使代码逻辑更加清晰,方便项目的后期维护封装组件可以让使用者不去关心组件的内部实现以及原理,能够使一个团队更好的有层次的去运行封装的ECharts组件实现了以下的功能:使用组件传递ECharts中的option属性手动/自动设置chart尺寸chart自适应宽高动态展

利用ECharts和Python接口生成漏斗图的步骤利用ECharts和Python接口生成漏斗图的步骤Dec 17, 2023 am 10:08 AM

利用ECharts和Python接口生成漏斗图的步骤,需要具体代码示例漏斗图是一种常用的数据可视化工具,可以用于展示数据在不同阶段之间的变化情况。利用ECharts和Python接口,我们可以轻松地生成漂亮的漏斗图。下面,将按照以下步骤介绍如何实现漏斗图的生成,并给出具体的代码示例。步骤一:安装ECharts和Python接口首先,我们需要安装ECharts

如何在Python中使用ECharts绘制堆叠柱状图如何在Python中使用ECharts绘制堆叠柱状图Dec 17, 2023 am 09:48 AM

在数据可视化领域,堆叠柱状图是一种常见的可视化方式。它将多个数据系列绘制成一个条形,每个条形由多个子项组成,每个子项对应一个数据系列,在同一坐标系下进行展示。这种图表可以用于比较不同类别或数据系列的总大小、每个类别或数据系列的组成比例等。在Python中,我们可以使用ECharts库来绘制堆叠柱状图,而且该库具有丰富的可定制性和交互性。一、安装和导入ECha

ECharts漏斗图:如何展示数据转化率ECharts漏斗图:如何展示数据转化率Dec 17, 2023 am 08:32 AM

ECharts漏斗图:如何展示数据转化率,需要具体代码示例导语:在数据可视化领域,漏斗图是一种非常常用的图表类型,它能够直观地展示数据的转化过程与转化率。ECharts作为一个强大的数据可视化工具,也提供了漏斗图的绘制功能。本文将结合具体的代码示例,详细介绍ECharts漏斗图的绘制方法以及如何展示数据的转化率。漏斗图的基本结构漏斗图由上至下呈现不同的阶段,

如何在ECharts中使用桑基图展示数据流向如何在ECharts中使用桑基图展示数据流向Dec 17, 2023 am 09:38 AM

如何在ECharts中使用桑基图展示数据流向引言:数据可视化是数据分析中的重要环节,能够将复杂的数据通过图表等方式直观地展示出来。ECharts是一个功能强大的数据可视化库,支持多种图表类型,其中桑基图(SankeyDiagram)能够非常直观地展示数据的流向关系。本文将介绍如何在ECharts中使用桑基图展示数据流向,并提供具体的代码示例。引入EChar

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
2 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
2 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!