D3.js是一种数据操作类型的javascript库(也可视其为插件);结合HTML,SVG和CSS,D3可以图形化的,生动的展现数据。
d3获取:http://d3js.org/
在代码文件中引入D3:
<script type="text/javascript" src="d3.v3/d3.v3.js"></script>
添加元素语法:
d3.select("body").append("p").text("New paragraph!");
说明:选择body标签,为之添加一个p标签,并设置它的内容为New paragraph!
你可以将链接选择换行,这样代码结构更清晰:
1 d3.select("body") 2 .append("p") 3 .text("New paragraph!");
还可以避免使用链接语法(这个一般不会用上):
1 var body = d3.select("body"); 2 var p = body.append("p"); 3 p.text("New paragraph!");
D3可以处理哪些类型的数据
它会接受几乎任何数字数组,字符串,或对象(本身包含其他数组或键/值对)。
它可以处理JSON和GeoJSON
甚至有一个内置的方法来帮助你CSV文件中加载数据。
我们要做两件事:数据准备;元素选择。
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <title>testD3-1.html</title> 5 <script type="text/javascript" src="d3.v3.js"></script> 6 </head> 7 8 <body> 9 This is my HTML page. <br> 10 </body> 11 <script type="text/javascript"> 12 var dataset = [ 5, 10, 15, 20, 25 ]; 13 d3.select("body").selectAll("p") 14 .data(dataset) 15 .enter() 16 .append("p") 17 .text("New paragraph!"); 18 </script> 19 </html>
说明:
d3.select("body")
查找DOM中的body和准备链中的下一个步骤的参考。
selectAll("p")
选择DOM中的所有段落。由于没有存在,这将返回一个空的选择。这个选择为空,代表段落很快就会存在。
data(dataset)
计数和分析我们的数据值。有五个值,之后我们的数据集执行了5次,每个值一次。
enter()
要创建新的数据绑定的元素,你必须使用enter() 。这个方法会在DOM中,然后被传递给它的数据。如果有更多的数据值比相应的DOM元素,然后进入() 创建一个新的占位符元素,关闭的引用到这个新的占位符链中的下一个步骤。
append("p")
以占位符enter() 到DOM中插入一个p元素。
text("New paragraph!")
将新创建的p和插入一个文本值的参考。
使用数据
说明:
用一个d表示当前数据值。
可以使用一个匿名函数处理这个数据。
接上面一个例子可以显示数据值,还可以根据数据值来修改颜色值做不同的数据呈现。
示例:
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <title>testD3-3.html</title> 6 <script type="text/javascript" src="d3.v3.js"></script> 7 </head> 8 <body> 9 <script type="text/javascript"> 10 11 var dataset = [ 5, 10, 15, 20, 25 ]; 12 13 d3.select("body").selectAll("p") 14 .data(dataset) 15 .enter() 16 .append("p") 17 .text(function(d) { 18 return "I can count up to " + d; 19 }) 20 .style("color", function(d) { 21 if (d > 15) { //Threshold of 15 22 return "red"; 23 } else { 24 return "black"; 25 } 26 }); 27 28 </script> 29 </body> 30 </html>
效果:
参考书籍:《数据可视化实战》