nvd3使用(1)——多线图中的一个很隐蔽的bug
来源:互联网 发布:three.js全景图的原理 编辑:程序博客网 时间:2024/05/16 14:43
d3是一个非常强大的以数据驱动的基础图形库,其中封装了一系列的图形转化变形处理操作,欲知其强大在哪里,强大到什么地步,请参考http://d3js.org 和 https://github.com/mbostock/d3/wiki/Api%E5%8F%82%E8%80%83.
而nvd3则是对d3的一层封装,其只要目的是绘制一系列的常用图——如线图、饼图、直方图等。
使用d3和nvd3实现数据可视化是非常方便的,几行js代码就能搞定。
而在我使用过程中去发现了nvd3的一个很隐蔽也很致命的bug。我为这个bug付出了整整两天的时间。
bug描述
这是什么鬼问题,更本无从下手啊!这次的线和nvd3的示例有什么区别?
通过对nv.d3.js文件报错点逐步调试,发现是在绘制nv-scatterWrap 的nv-point-paths时候失败的。
展开nv-point-paths节点
这个明显是nvd3的一个bug,出现这出线图的情况比比皆是。不可能要求所以这种情况都要求规避吧!
解决方案
暂时没想到
而nvd3则是对d3的一层封装,其只要目的是绘制一系列的常用图——如线图、饼图、直方图等。
使用d3和nvd3实现数据可视化是非常方便的,几行js代码就能搞定。
而在我使用过程中去发现了nvd3的一个很隐蔽也很致命的bug。我为这个bug付出了整整两天的时间。
bug描述
开始的时候接触的nvd3的示例,这些当然是完美的没有任何bug的图。然后自己开始使用自己的实用数据画,也没问题,直到后来某一有点不太漂亮的数据出现了。如下图: bug就出现了,chrome报的错是:Uncaught TypeError: Cannot read property 'data' of undefined。报错的文件是nv.d3.js:11190 而且每次点击legend,选定分组,发现只有一条线条的时候,线条交互回复正常,但是只要两条线同时选定的时候,交互就会失败,而其会报出上述的错误。
这是什么鬼问题,更本无从下手啊!这次的线和nvd3的示例有什么区别?
通过对nv.d3.js文件报错点逐步调试,发现是在绘制nv-scatterWrap 的nv-point-paths时候失败的。
展开nv-point-paths节点
点击一个无数据的path节点,查看该节点对应的css
然后页面就会出现一些很奇怪的区域,这个明显是来划分每个点选择范围的(你的鼠标移入此区域后,该区域内的点会被激活)。
当发现只要两条线有重叠的时候,选择区域明显没有画完,这时我明白了,为什么会报错。因为当线条重叠的时候,数据点重叠了,所以其激活区域重叠了,从而没办法判断此区域到底属于谁,所以导致激活区域化不下去了。
这个明显是nvd3的一个bug,出现这出线图的情况比比皆是。不可能要求所以这种情况都要求规避吧!
解决方案
暂时没想到
0 0
- nvd3使用(1)——多线图中的一个很隐蔽的bug
- 一个隐蔽的Bug
- Opera中绘制的SVG圆弧很隐蔽的一个bug
- [lwn] A nasty file corruption bug - fixed (关于Linus解决的一个set_page_dirty很隐蔽的bug)
- 一个较隐蔽影响无线网络使用的问题
- 使用GET请求资源时一个隐蔽的问题
- Struts2整合Json插件时的一个隐蔽BUG-----struts2-json-plugin-2.1.8
- 微信端开发 种出一个稍微有点隐蔽的前后端BUG
- #include expects "FILENAME" or 一个很隐蔽的问题
- 一个很隐蔽的数组下标越界问题
- 一个隐蔽的内存泄漏——pthread_create后没有detach导致内存持续增长
- 解决了一个隐蔽的内存泄漏——pthread_create后没有detach导致内存持续增长
- 解决了一个隐蔽的内存泄漏——pthread_create后没有detach导致内存持续增长
- 分享一个基于D3.js的互动可重用图表javascript类库 - NVD3.js
- 《致加西亚的信》一书中的一个隐蔽错误
- 一个隐蔽的C内存越界错误
- 一个隐蔽克隆帐号的方法
- 说一个隐蔽克隆帐号的方法
- 马伊琍此行看望生病奶奶,有网友说是回家离婚
- edx 安装笔记1-edx ububutu server 12.04安装
- wn32拦截ExtTextOut屏幕取词
- Windows 8提升普通管理员权限为超级管理员权限以及激活超级管理员Administrator
- MySQL数据库中文乱码问题
- nvd3使用(1)——多线图中的一个很隐蔽的bug
- SSH框架搭建 笔记 (含spring注解驱动)
- 如何提高团队管理能力7
- 如何提高团队管理能力8
- js倒计时(获取服务器端时间)
- db2查看其端口号
- JAVA面向对象知识点总结(2)—封装、构造函数、构造代码块、this关键字
- android 自定义控件
- NYOJ-111-分数加减法