d3-sankey 桑基图数据量过大的情况下页面混乱

项目中需要使用桑基图的图表,对比百度的echarts和d3.js中的桑基图的例子,抱着学习的态度,选用了d3.js (version 4).
废话不多说,直接上代码:




  
  
  
  Sankey
  
  
  


  

代码中大多是官网上的例子,只是加了个提示框的跟随鼠标移动的提示框。
说说遇到的问题吧

问题1: 鼠标放到每个link上,如何使相应的 link 颜色加深

//  css  样式中是这么写的
 .link {
      fill: none;
      stroke: #ddd;
      stroke-opacity: 0.5;
      cursor: pointer;
    }
    .link title {
      visibility: hidden;
    }
    .link:hover {
      stroke-opacity: 1;
    }
// 加了鼠标事件后发现这个hover效果不好用了,需求时间紧,没办法,简单粗暴,好用就行。
// 所以在鼠标mouseover 、mousemove、mouseout事件中修改了,代码如下
.on('mouseover', function (d) {
     d3.select(this).style("stroke-opacity", "1")
       .......
 })
.on('mousemove', function (d) {
     d3.select(this).style("stroke-opacity", "1")
       .......
 })
.on('mouseout', function (d) {
     d3.select(this).style("stroke-opacity", "0.5")
       .......
 })

问题2: 例子中的测试数据量大小,开发中用大数据测试的时候发现页面全乱了。

数据量大的时候页面会报错
Error:  attribute height: A negative value is not valid

stackoverflow答案链接:http://stackoverflow.com/questions/40579174/large-data-set-breaks-d3-sankey-diagram/40581444#40581444

就这些,如有问题,欢迎交流与学习。

github

google和baidu的一些参考资料:

  • https://github.com/d3/d3 d3.js github地址
  • https://github.com/d3/d3-sankey D3 桑基图插件
  • https://github.com/d3/d3/blob/master/API.md#dragging-d3-drag D3 api插件
  • https://bl.ocks.org/xaranke/9ada4c74a87b57ae7308 D3 桑基图官方demo
  • https://github.com/tianxuzhang/d3.v4-API-Translation D3最新版本(version 4) 中文文档
  • http://blog.csdn.net/tianxuzhang/article/details/49624701 博客园
  • https://yq.aliyun.com/articles/72335 d3数据的"更新" 和 "退出" (阿里云栖社区)

你可能感兴趣的:(d3-sankey 桑基图数据量过大的情况下页面混乱)