D3.js
html代码:
<div id="id">
<p>Apple</p>
<p id="aa">Pear</p>
<p>Banana</p>
</div>
<div>
<p>a</p>
<p>b</p>
<p>c</p>
</div>
页面效果:

1.选择元素和绑定数据
- 选择元素
(1) select(): 选择所有指定元素的第一个
var div = d3.select('#id');
var p = div.select("p");
p.style("color","red")
页面效果:

(2) selectAll():选择所有指定元素的全部
var div = d3.select('div');
var p = div.selectAll("p");
p.style("color","red")
页面效果:

- 绑定数据
(1) datum():绑定一个数据到选择集上
var str = "China";
var arr = ['a','b','c']
var body = d3.select("body");
var p = body.selectAll("p");
p.datum(str);
p.text(function(d,i){
return "第" + i + "个元素绑定的数据是" + d;
})
页面效果:

上面的代码中,用到了一个无名函数function(d,i){},其中:
● d 代表数据,也就是与某元素绑定的数据。
● i 代表索引,代表数据的索引号,从 0 开始。
(2) data():绑定一个数组到选择集上,数组的各项值分别与选择集的各元素绑定
var dataset = ["I like dog","I like cat","I like snake"];
var body = d3.select("body");
var p = body.selectAll("p");
p.data(dataset).text(function(d,i){
return d;
})
页面效果:

2. 插入元素
(1) append():在选择集末尾插入元素
var div = d3.select('#id');
div.append("p").text("append p element");
页面效果:

(2) insert():在选择集前面插入元素
var div = d3.select('#id');
div.insert("p","#aa").text("insert p element");
页面效果:

3. 删除元素
remove():删除一个元素
var div = d3.select("#id");
var p = div.select("p")
p.remove();
页面效果:

4. 一个简单的图表
var width = 300; // 画布的宽度
var height = 300; // 画布的高度 var svg = d3.select("body") // 选择文档中的body元素
.append("svg") // 添加一个svg元素
.attr("width",width) // 设定宽度
.attr("height",height) // 设定高度 var dataset = [250, 210, 170, 130, 90] // 数据(表示矩形的宽度) var rectHeight = 25; // 每个矩形所占的像素高度(包括空白) //----------------------------------------------------------
svg.selectAll("rect") // 选择svg内所有的矩形
.data(dataset) // 绑定数组
.enter() // 指定选择集的enter部分
.append("rect") // 添加足够数量的矩形元素
//----------------------------------------------------------
// 这段代码要牢记,当有数据,而没有足够图形元素的时候,使用此方法可以添加足够的元素 .attr("x",20)
.attr("y",function(d,i){
return i * rectHeight;
})
.attr("width",function(d,i){
return d;
})
.attr("height",rectHeight-2) .attr("fill","#ccc"); // 设置颜色
页面效果:

5. 比例尺:将某一区域的值映射到另一区域,其大小关系不变
- 线性比例尺
// 要求:将dataset中最小的值映射成0,最大的值映射成300
var dataset = [1.2, 2.3, 0.9, 1.5, 3.3]; var min = d3.min(dataset);
var max = d3.max(dataset); var linear = d3.scale.linear().domain([min,max]).range([0,300]); console.log(linear(0.9)); // 返回0
console.log(linear(2.3)); // 返回175
console.log(linear(3.3)); // 返回300

d3.scale.linear() 返回一个线性比例尺。domain() 和 range() 分别设定比例尺的定义域和值域。d3.min()和d3.max()两个函数经常与比例尺一起出现。值得注意的是,d3.scale.linear() 的返回值,是可以当做函数来使用的。因此,才有这样的用法:linear(0.9)。
- 序数比例尺: 定义域和值域一一对应关系
var index = [0, 1, 2, 3, 4];
var color = ["red", "blur", "green", "yellow", "black"]; var ordinal = d3.scale.ordinal().domain(index).range(color); console.log(ordinal(0)); // 返回red
console.log(ordinal(2)); // 返回green
console.log(ordinal(4)); // 返回black

- 给柱形图添加比例尺
var width = 500; // 画布的宽度
var height = 500; // 画布的高度 var svg = d3.select("body") // 选择文档中的body元素
.append("svg") // 添加一个svg元素
.attr("width",width) // 设定宽度
.attr("height",height) // 设定高度 var dataset = [2.5, 2.1, 1.7, 1.3, 0.9]; var linear = d3.scale.linear().domain([0, d3.max(dataset)]).range([0, 200]) var rectHeight = 25; svg.selectAll("rect")
.data(dataset)
.enter()
.append("rect")
.attr("x",20)
.attr("y",function(d, i){
return i * rectHeight;
})
.attr("width",function(d){
return linear(d) // 这里添加比例尺
})
.attr("height",rectHeight-2)
.attr("fill","#ccc")

修改值域 .range([0, 400]) 后:

柱形图改变。
D3.js的更多相关文章
- D3.js学习(七)
上一节中我们学会了如何旋转x轴标签以及自定义标签内容,在这一节中,我们将接触动画(transition) 首先,我们要在页面上添加一个按钮,当我们点击这个按钮时,调用我们的动画.所以,我们还需要在原来 ...
- D3.js学习(一)
从今天开始我将和大家一起学习D3.js(Data-Driven Documents),由于国内关于D3的学习资料少之又少,所以我觉得很有必要把自己学习过程记录下来,供同学们参考,如果文章有有哪些表达有 ...
- D3.js学习记录
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- D3.js部署node环境开发
总结一段D3.js部署node环境的安装过程 准备阶段: 首先电脑上要安装node环境,这个阶段过滤掉,如果node环境都不会装,那就别玩基于node环境搞的其他东西了. 搭建环境: 我在自己的F:系 ...
- d3.js读书笔记-1
d3.js入门 d3入门 D3是一个强大的数据可视化工具,它是基于Javascript库的,用于创建数据可视化图形.在生成可视化图形的过程中,需要以下几步: 把数据加载到浏览器的内存空间: 把数据绑定 ...
- 【 D3.js 进阶系列 — 6.1 】 缩放的应用(Zoom)
缩放(Zoom)是另一种重要的可视化操作,主要是使用鼠标的滚轮进行. 1. zoom 的定义 缩放是由 d3.behavior.zoom() 定义的. var zoom = d3.behavior.z ...
- [资料搜集狂]D3.js数据可视化开发库
偶然看到一个强大的D3.js,存档之. D3.js 是近年来十分流行的一个数据可视化开发库. 采用BSD协议 源码:https://github.com/mbostock/d3 官网:http://d ...
- D3.js 用层画条形图
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- 【 D3.js 入门系列 --- 3 】 做一个简单的图表!
前面说了几节,都是对文字进行处理,这一节中将用 D3.js 做一个简单的柱形图. 做柱形图有很多种方法,比如用 HTML 的 div 标签,或用 svg . 推荐用 SVG 来做各种图形.SVG 意为 ...
- 【 D3.js 入门系列 --- 2.1 】 关于如何选择,插入,删除元素
在D3.js中,选择元素的函数有两个:select 和 selectAll . 先说明一下它们的区别: select 是选择所有指定元素的第一个 selectAll 是选择指定元素的全部(以用于后面同 ...
随机推荐
- 数据结构栈的java实现
近来复习数据结构,自己动手实现了栈.栈是一种限制插入和删除只能在一个位置上的表.最基本的操作是进栈和出栈,因此,又被叫作“先进后出”表. 实现方式是这样的:首先定义了一个接口,然后通过这个接口实现了线 ...
- 为ASP.NET MVC应用程序实现继承
为ASP.NET MVC应用程序实现继承 这是微软官方教程Getting Started with Entity Framework 6 Code First using MVC 5 系列的翻译,这里 ...
- CString转换为const char*
CString str=_T("这是我的测试程序.");// 先得到要转换为字符的长度const size_t strsize=(str.GetLength()+1)*2; // ...
- TFS二次开发的数据统计以PBI、Bug、Sprint等为例(一)
TFS二次开发的数据统计以PBI.Bug.Sprint等为例(一) 在TFS二次开发中,我们可能会根据某一些情况对各个项目的PBI.BUG等工作项进行统计.在本文中将大略讲解如果进行这些数据统计. 一 ...
- (转)NoSQL——Redis在win7下安装配置的学习一
NoSQL——Redis在win7下安装配置的学习一 有些也是从网上看来的 1.下载安装 Redis它没有windows的官方版本,但是又非官方的版本,到官网上去下载相应的版本,我的电脑是win7 ...
- breakpad是Google开源的一套跨平台工具
windows下捕获dump之Google breakpad_client的理解 breakpad是Google开源的一套跨平台工具,用于dump的处理.很全的一套东西,我这里只简单涉及break ...
- easyui tree 的数据格式转换
一般用来储存树数据的数据库表都含有两个整型字段:id pid,所以我们查询出来的List一般是这样的(约定pId为-1的节点为根节点): var serverList = [ {id : 2,pid ...
- .NET框架设计—常被忽视的C#设计技巧
.NET框架设计—常被忽视的C#设计技巧 阅读目录: 1.开篇介绍 2.尽量使用Lambda匿名函数调用代替反射调用(走进声明式设计) 3.被忽视的特性(Attribute)设计方式 4.扩展方法让你 ...
- 项目检出JRE问题(Unbound classpath container: 'JRE System Library [JavaSE-1.7]' in project 'idweb')
分类: java 技术2014-07-31 16:51 9864人阅读 评论(13) 收藏 举报 项目从SVN检出到工作空间后报了很多错误,其中很明显就是一些jar的问题,没有相关的jar或版本问题, ...
- VS2012编译LibZip库
LibZip库是解压缩zip文件的C库. 中文的网站目前还没有找到相关的编译方法,找了一篇英文文档加上自己的实验修改了一下: 编译步骤如下: 首先先下载CMake,我下载的是2.8版本. libzip ...