对可视化库D3.js的应用研究

时间:2022-05-09 08:30:01

对可视化库D3.js的应用研究

摘 要

D3(Data-Driven Documents)是最流行的可视化库之一,是一个用动态图形显示数据的JavaScript库,一个数据可视化的工具。通过D3.js实现数据的可视化,可以分为下面几个步骤。首先是将数据加载到浏览器的内存空间中,然后把加载的数据绑定到文档中的元素,并根据需要创建新的元素,接着解析每个元素的范围资料并为其设置相应的可视化属性,实现元素的变换,最后响应用户输入实现元素状态的过渡,以图形的形式将数据可视化的结果展示在浏览器上。

【关键词】D3 数据可视化 DOM

1 D3.js的基本特性

D3是缩写,它的全称是Data-Driven Documents(数据驱动文档),是基于数据的文档操作JavaScript库。D3能够把数据和HTML、SVG、CSS结合起来,创造出可交互的数据图表。其中,数据来源自作者,文档代表基于Web的文档(或网页),也就是可以在浏览器中展现的一切,比如,HTML、SVG等,而D3相当于是扮演了一个驱动程序的角色,将数据和文档联系起来。

D3.js采用的是链式语法,非常方便于对库中函数方法的引用。

例如:d3.select("body").append("p").text("New"); //为p元素添加文字内容

数据的可视化可以让数据分析的结果更加直观,便于发觉隐含内容D3结合功能强大的可视化组件和数据驱动的方法对DOM进行操作,可以将任意数据绑定到文档对象模型(DOM)。 支持的数据格式有常见的:txt、html、json、html、xml、csv等。

D3 不隐藏你的原始数据。D3 代码在客户端执行(也就是在用户浏览器,而不是 Web 服务器中执行),因此你想要可视化的数据必须发送到客户端。可视化的目的就是为了更好地表现数据。

D3不是一个整体框架,旨在提供每一个可以想象的特征。相反,D3解决问题的关键在于:基于数据文件的有效操作。这避免了专有的表示提供了非凡的灵活性,使Web标准如CSS3的全部功能,HTML5和SVG。以最小的开销、非常快的速度,支持大型数据集和互动的动态可视化行为。

2 D3可视化特性在电力数据可视化中的应用

2.1 电力机组数据的可视化研究

通过D3.js实现数据的可视化,可以分为下面几个步骤。

首先是将数据加载到浏览器的内存空间中,在本文研究的应用实例中就是把时间和频率两组数据电力机组的数据库中接收并加载到浏览器的内存空间中。

例如d3.json('http://localhost:8888/selectInterval?qs='+start+'&js='+end+'&bm='+table+'&

xvalue='+time+'&yvalue='+value,function(json) {});

然后把加载的数据绑定到文档中的元素,并根据需要创建新的元素,具体到本文实例中也就是将时间和频率两组数据绑定到最终网页显示中的可视化图表结果中,也就是分别映射到可视化图表的X轴和Y轴,整个网页中的元素可以分为两类,一类是可视化图表中的元素,主要包括X、Y轴及其值域、坐标轴区域网格化显示和可视化图表中折线的属性(线宽、颜色等),这些元素都是为了使最终显示的结果更清晰明了;另一类是参数部分,主要包括画布宽度、高度(以像素为单位),用来控制数据可视化显示区域的大小,也包括起始时间、终止时间、表名、画布数据量、X轴字段、Y轴字段等,用来决定从哪里加载数据、加载哪些数据以及可视化区域中一次显示数据的多少,还包括Y轴上限和Y轴下限等,用来控制Y轴的值域区间,更有助于使数据的可视化展示能更好的反映出数据变化的情况。

2.2 应用结果分析

图1所示是基于D3.js对一电力机组在某一时间区间内的frequency(频率值)实现数据可视化后的结果截图,其中横轴是时间,纵轴是相应的频率值。在实例中通过D3实现对数据的可视化,清晰的展现出数据的分布情况,可以方便观察数据,快捷的辨别出某一时间区间内电力机组的工作频率是否在正常工作的频率范围内。

3 基于D3的数据可视化

本文通过对电力机组工作数据的可视化研究,比较深入的了解了D3.js的特性、不足和工作机制。根据应用实例研究结果,可以知道D3是一个很好的数据可视化工具,它支持多种数据格式,例如txt、html、json、html、xml、csv等,同时结合功能强大的可视化组件和数据驱动的方法进行操作,以最小的开销、非常快的速度,实现数据可视化的目标。

参考文献

[1]Scott Murray著,李松峰译.数据可视化实战[M].北京:人民邮电出版社,2013(06).

[2]周爱民著.JavaScript语言精髓与实践[M].北京:电子工业出版社,2012(03).

[3]尼古拉斯.泽卡斯(Nicholas C.Zakas)著.JavaScript高级程序设计[M].北京:人民邮电出版社,2010(07).

作者单位

河南牧业经济学院 河南省郑州市 450044

上一篇:关于思想政治教育中落实“以人为本”理念的哲... 下一篇:关于分布式文件传输系统的技术要点探究