首页 > 其他 > 详细

d3相关知识整理

时间:2015-03-25 21:22:49      阅读:216      评论:0      收藏:0      [点我收藏+]
 
d3是基于svg的数据可视化库,提供风格类似jquery,易于上手。仅支持ie9及以上浏览器。据说使用aight可以兼容ie8(没用过),r2d3通常是我的最终方案,可以在部分情况下兼容ie7。另外,d3本身虽然提供了丰富的图形绘制函数,但最终决定效果的还是数据,d3的一切绘制都是以数据作为基础。
 
本着喂饱的精神,提供以下资料:
 
d3官网:http://d3js.org/
书籍推荐:《数据可视化实战:使用D3设计交互式图表》
 
 
 
---------------------------------------------------------------------------- 正文的分割线 ----------------------------------------------------------------------------
 
我们先来看一个基本的d3程序:
 
 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>基础条形图</title>
 6 </head>
 7 <body>
 9     <div id="chart"></div>
10 
11     <script src="js/d3.v3.min.js"></script>
12     <script>
13 
14     drawLineBar(‘#chart‘)
15 
17     function drawLineBar(selector) {
18 
19         // 示例数据
20         var dataset = [ 5, 10, 15, 20, 30, 50 ]
21         var width = 500,
22             height = 500
23 
24         // 创建线性比例尺
25         var scale = d3.scale.linear()
26             .domain([0, d3.max(dataset)])
27             .range([0, height])30 
31         // 创建svg
32         var svg = d3.select(selector)
33             .append(‘svg‘)
34             .attr(‘width‘, width)
35             .attr(‘height‘, height)
36 
37         // 绘制条形图
38         svg.selectAll(‘rect‘)
39             .data(dataset)
40             .enter()
41             .append(‘rect‘)
42             .attr(‘width‘, ‘20px‘)
43             .attr(‘height‘, function(d, i) {
44 
45                 return scale(d)
46             })
47             .attr(‘y‘, function(d, i) {
48 
49                 return height - scale(d)
50             })
51             .attr(‘x‘, function(d, i) {
52 
53                 return i * (width / dataset.length)
54             })
55             .attr(‘fill‘, ‘#457eb4‘)77     }
78 
79     </script>
80 </body>
81 </html> 
关键的步骤我已经有写注释,这里稍作展开。
 
1. 加载数据,这里是直接写死在上面,通常会使用d3的加载函数。d3.csv、d3.tsv、d3.json。语法如下:
  d3.json(url, callback)
  - callback是可选项,由于是异步加载资源请注意
 
2. 创建比例尺,d3中的比例尺分为两种:线性比例尺d3.scale.linear和序数比例尺d3.scale.ordinal。这里用到的线性比例尺,需要设置domain和range。
domain是输入的值域,range是转换后的输出范围。在这里通常会用到两个常用函数,d3.max和d3.min。前者返回数组中的最大值,后者则返回最小值。
下面是非常常见的写法:
 
// 直接用最小值和最大值取值
domain(d3.min(array), d3.max(array))
// 输出要考虑留白和数轴的位置          
range(d3.min(array) + padding, d3.max(array) - padding)  
 
3. 创建svg
4. 绘制条形图,svg中常见的标准图形包括rect、circle、path、text、line和polygon
 
 
因为本人经常访问d3官网慢的出奇,所以这里没有使用d3官网的cdn。
效果如下:
 
技术分享
 
 
 
 
 

d3相关知识整理

原文:http://www.cnblogs.com/sunken/p/4366824.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!