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的更多相关文章

  1. D3.js学习(七)

    上一节中我们学会了如何旋转x轴标签以及自定义标签内容,在这一节中,我们将接触动画(transition) 首先,我们要在页面上添加一个按钮,当我们点击这个按钮时,调用我们的动画.所以,我们还需要在原来 ...

  2. D3.js学习(一)

    从今天开始我将和大家一起学习D3.js(Data-Driven Documents),由于国内关于D3的学习资料少之又少,所以我觉得很有必要把自己学习过程记录下来,供同学们参考,如果文章有有哪些表达有 ...

  3. D3.js学习记录

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  4. D3.js部署node环境开发

    总结一段D3.js部署node环境的安装过程 准备阶段: 首先电脑上要安装node环境,这个阶段过滤掉,如果node环境都不会装,那就别玩基于node环境搞的其他东西了. 搭建环境: 我在自己的F:系 ...

  5. d3.js读书笔记-1

    d3.js入门 d3入门 D3是一个强大的数据可视化工具,它是基于Javascript库的,用于创建数据可视化图形.在生成可视化图形的过程中,需要以下几步: 把数据加载到浏览器的内存空间: 把数据绑定 ...

  6. 【 D3.js 进阶系列 — 6.1 】 缩放的应用(Zoom)

    缩放(Zoom)是另一种重要的可视化操作,主要是使用鼠标的滚轮进行. 1. zoom 的定义 缩放是由 d3.behavior.zoom() 定义的. var zoom = d3.behavior.z ...

  7. [资料搜集狂]D3.js数据可视化开发库

    偶然看到一个强大的D3.js,存档之. D3.js 是近年来十分流行的一个数据可视化开发库. 采用BSD协议 源码:https://github.com/mbostock/d3 官网:http://d ...

  8. D3.js 用层画条形图

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  9. 【 D3.js 入门系列 --- 3 】 做一个简单的图表!

    前面说了几节,都是对文字进行处理,这一节中将用 D3.js 做一个简单的柱形图. 做柱形图有很多种方法,比如用 HTML 的 div 标签,或用 svg . 推荐用 SVG 来做各种图形.SVG 意为 ...

  10. 【 D3.js 入门系列 --- 2.1 】 关于如何选择,插入,删除元素

    在D3.js中,选择元素的函数有两个:select 和 selectAll . 先说明一下它们的区别: select 是选择所有指定元素的第一个 selectAll 是选择指定元素的全部(以用于后面同 ...

随机推荐

  1. ASP.NET请求处理过程

    当请求一个*.aspx文件的时候,这个请求会被inetinfo.exe进程截获,它判断文件的后缀(aspx)之后,将这个请求转交给Aspnet_isapi.dll,aspnet_isapi.dll会通 ...

  2. mvc项目如何在IIS7.5

    mvc项目如何在IIS7.5上发布的 1.在vs中打开你要发布的项目,右键属性找到发布 2.弹出发布web对话框,选择<新建配置文件...> 在弹出的对话框中输入一个配置文件名称,后确定 ...

  3. Back to High School Physics - UVa10071

    欢迎访问我的新博客:http://www.milkcu.com/blog/ 原文地址:http://www.milkcu.com/blog/archives/uva10071.html 题目描述 Pr ...

  4. Asp.Net Web Api 与 Andriod 接口对接开发

    Asp.Net Web Api 与 Andriod 接口对接开发经验,给小伙伴分享一下!   最近一直急着在负责弄Asp.Net Web Api 与 Andriod 接口开发的对接工作! 刚听说要用A ...

  5. Microsoft Push Notification Service(MPNS)的最佳体验

    如何获得 Microsoft Push Notification Service(MPNS)的最佳体验 有很多同学抱怨MPNS的各种问题,其中包括服务超时.返回各种错误代码不知如何处理等等..今天我用 ...

  6. ubuntu下使用golang、qml与ubuntu sdk开发桌面应用

    ubuntu下使用golang.qml与ubuntu sdk开发桌面应用 (简单示例) 找了很长时间go的gui库,试了gtk,准备试qt的时候发现了这个qml库,试了下很好用. 准备工作 1.Go ...

  7. Ubuntu13.04 Eclipse下编译安装Hadoop插件及使用小例

    Ubuntu13.04 Eclipse下编译安装Hadoop插件及使用小例 一.在Eclipse下编译安装Hadoop插件 Hadoop的Eclipse插件现在已经没有二进制版直接提供,只能自己编译. ...

  8. 用Jekyll在github上写博客

    用Jekyll在github上写博客——<搭建一个免费的,无限流量的Blog>的注脚 本来打算买域名,买空间,用wordpress写博客的.后来问了一个师兄,他说他是用github的空间, ...

  9. DOM处理

    DOM处理 这几天整理了一下思路,本来觉得DOM部分会有很多东西,但是忽然发现频繁使用的其实并不太多 class class处理部分主要有四个 hasClass:检查元素是否包含某个class add ...

  10. 编译linux内核时出错

    在编译linux内核的时候使用make menuconfig 可能出现下面的错误 *** Unable to find the ncurses libraries or the*** required ...