最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

echarts鼠標覆蓋高亮顯示節(jié)點及關(guān)系名稱詳解

 更新時間:2018年03月17日 09:43:02   作者:ueba  
下面小編就為大家分享一篇echarts鼠標覆蓋高亮顯示節(jié)點及關(guān)系名稱詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

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

1、效果

先上效果,原來是鼠標覆蓋之后只顯示節(jié)點名稱不顯示關(guān)系名稱。

修改之后可以既顯示節(jié)點名稱又顯示(自定義的)關(guān)系名稱。

2、代碼

html部分就這樣。

<div id="main"></div>

js代碼,使用了jquery和echarts.js,用的是源代碼那版,因為待會要進源代碼里修改……

echarts.js下載地址

其實js代碼和echart官網(wǎng)demo的代碼完全沒區(qū)別……

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

$(function() {
 showChart();
});
var myChart;
option = {
 title : {
 text : '示例'
 },
 animationDurationUpdate : 1500,
 animationEasingUpdate : 'quinticInOut',
 series : [ {
 type : 'graph',
 layout : 'force',
 //data和edges里的內(nèi)容在之后動態(tài)添加
 data : [],
 edges : [],
 //這個label管的是data的label
 label : {
  emphasis : {
  position : 'right',
  show : true
  }
 },
 force : {
  repulsion : 1000
 },
 roam : true,
 //將指定的節(jié)點以及其所有鄰接節(jié)點高亮。
 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的結(jié)構(gòu)在下面有截圖,可以一一對應(yīng)
  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中規(guī)定的參數(shù),也可以使用一些自定義的參數(shù),這里的attribute就是自定義的。這個參數(shù)在改源碼時會用到。
  };
  });
  myChart.setOption(option, true);
 },
 error : function(errorMsg) {
  alert("請求數(shù)據(jù)失敗!");
 }
 });
};

調(diào)用接口返回的data結(jié)構(gòu)和內(nèi)容如下:

nodes表示節(jié)點,放到option.series[0].data里。

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

links表示關(guān)系,放到option.series[0].edges里。

links有三個參數(shù)source為關(guān)系的起點(吧),target為關(guān)系的終點(吧),value是關(guān)系名稱(標簽),在edges里放到attribute參數(shù)里。

要注意的是,要實現(xiàn)這種效果,一定不能在edges里給關(guān)系設(shè)置label參數(shù)。

3、修改源碼中的focusNodeAdjacency方法

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

在echarts.js里搜一下focusNodeAdjacency很快就能找到以下內(nèi)容,然后只要添加下面有注釋的三行代碼,就能實現(xiàn)本文顯示節(jié)點和關(guān)系名稱的效果了。

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是關(guān)系,顯示標簽,標簽內(nèi)容自定。
* 使用item.getModel().get('xxx'),將xxx修改為對應(yīng)的參數(shù)名稱,
* 可獲得自帶及自定義的所有內(nèi)容。
* 這里get('attribute')的attribute為edge中自定義的參數(shù)。
*/
if(child.type =='ec-line'){
 child.setStyle('text',item.getModel().get('attribute'));
}
/**
* 結(jié)束,這里就增加上面兩句。
*/
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 < 0) {
 return;
}
fadeInItem(edge, lineOpacityPath);
fadeInItem(edge.node1, nodeOpacityPath);
fadeInItem(edge.node2, nodeOpacityPath);
 });
 }
},
unfocusNodeAdjacency: function (seriesModel, ecModel, api, payload) {
 var graph = this._model.getData().graph;
 graph.eachNode(function (node) {
 var opacity = getItemOpacity(node, nodeOpacityPath);
 node.getGraphicEl().traverse(function (child) {
child.trigger('normal');
if (child.type !== 'group') {
 child.setStyle('opacity', opacity);
}
 });
 });
 graph.eachEdge(function (edge) {
 var opacity = getItemOpacity(edge, lineOpacityPath);
 edge.getGraphicEl().traverse(function (child) {
child.trigger('normal');
if (child.type !== 'group') {
 child.setStyle('opacity', opacity);
 /**
 * 增加下面這一句話。
 * 這個方法是鼠標從節(jié)點上移開時調(diào)用,取消高亮和標簽顯示的功能。
 * 在這里會把關(guān)系的標簽清空。
 * 所以如果對關(guān)系直接設(shè)置了label的話,在這一步也會被清掉。
 */
 child.setStyle('text','');
}
 });
 });
},

以上這篇echarts鼠標覆蓋高亮顯示節(jié)點及關(guān)系名稱詳解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • vuex中數(shù)據(jù)持久化插件vuex-persistedstate使用詳解

    vuex中數(shù)據(jù)持久化插件vuex-persistedstate使用詳解

    這篇文章主要介紹了vuex中數(shù)據(jù)持久化插件vuex-persistedstate使用詳解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Vue——解決報錯 Computed property

    Vue——解決報錯 Computed property "****" was assigned to but it ha

    這篇文章主要介紹了Vue——解決報錯 Computed property "****" was assigned to but it has no setter.的方法,幫助大家更好的理解和使用vue框架,感興趣的朋友可以了解下
    2020-12-12
  • Vue中request.js封裝及調(diào)用示例詳解

    Vue中request.js封裝及調(diào)用示例詳解

    這篇文章主要為大家介紹了Vue中request.js封裝及調(diào)用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-09-09
  • 基于Vue3+ts封裝一個簡單版的Message組件

    基于Vue3+ts封裝一個簡單版的Message組件

    近日項目中需要使用信息提示框的功能,ui組件庫使用的是字節(jié)的arco-design-vue,看了一下,現(xiàn)有的Message不滿足要是需求,直接使用message組件的話,改樣式太麻煩,所以本文就本就介紹了基于Vue3+ts封裝一個簡單版的Message組件,需要的朋友可以參考下
    2023-09-09
  • Vue3+Vue Router實現(xiàn)動態(tài)路由導(dǎo)航的示例代碼

    Vue3+Vue Router實現(xiàn)動態(tài)路由導(dǎo)航的示例代碼

    隨著單頁面應(yīng)用程序(SPA)的日益流行,前端開發(fā)逐漸向復(fù)雜且交互性強的方向發(fā)展,在這個過程中,Vue.js及其生態(tài)圈的工具(如Vue Router)為我們提供了強大的支持,本文將介紹如何在Vue 3中使用Vue Router實現(xiàn)動態(tài)路由導(dǎo)航,需要的朋友可以參考下
    2024-08-08
  • 小白教程|一小時上手最流行的前端框架vue(推薦)

    小白教程|一小時上手最流行的前端框架vue(推薦)

    這篇文章主要介紹了前端框架vue,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • Vue+webpack+Element 兼容問題總結(jié)(小結(jié))

    Vue+webpack+Element 兼容問題總結(jié)(小結(jié))

    這篇文章主要介紹了Vue+webpack+Element 兼容問題總結(jié)(小結(jié)),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08
  • Vue之Mixins(混入)的使用方法

    Vue之Mixins(混入)的使用方法

    這篇文章主要介紹了Vue之Mixins(混入)的使用方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-09-09
  • vue項目首屏加載時間優(yōu)化實戰(zhàn)

    vue項目首屏加載時間優(yōu)化實戰(zhàn)

    單頁面應(yīng)用的一個問題就是首頁加載東西過多,加載時間過長。特別在移動端,單頁面應(yīng)用的首屏加載優(yōu)化更是繞不開的話題,這篇文章主要介紹了vue項目首屏加載時間優(yōu)化實戰(zhàn),感興趣的小伙伴們可以參考一下
    2019-04-04
  • Vue如何實現(xiàn)響應(yīng)式系統(tǒng)

    Vue如何實現(xiàn)響應(yīng)式系統(tǒng)

    這篇文章給大家整理了關(guān)于Vue如何實現(xiàn)響應(yīng)式系統(tǒng)的相關(guān)知識點內(nèi)容,有興趣的朋友可以參考學習下。
    2018-07-07

最新評論

田林县| 德惠市| 西平县| 台北县| 湘阴县| 河津市| 吉隆县| 明星| 永靖县| 界首市| 南雄市| 重庆市| 麟游县| 安泽县| 苗栗县| 屯门区| 台江县| 饶平县| 新绛县| 龙陵县| 长阳| 浪卡子县| 驻马店市| 海阳市| 崇信县| 荣成市| 安达市| 桃江县| 洪江市| 渑池县| 乡宁县| 周宁县| 德令哈市| 穆棱市| 双牌县| 灵台县| 阳高县| 南宫市| 闽侯县| 英吉沙县| 孝昌县|