【D3.js 学习总结】1、初识D3

D3是指数据驱动文档(Data-Driven Documents),根据D3的官方定义:

D3.js是一个JavaScript库,它可以通过数据来操作文档。D3可以通过使用HTML、SVG和CSS把数据鲜活形象地展现出来。D3严格遵循Web标准,因而可以让你的程序轻松兼容现代主流浏览器并避免对特定框架的依赖。同时,它提供了强大的可视化组件,可以让使用者以数据驱动的方式去操作DOM。----D3维基(2013年8月)

从一个Hello Wordld示例来看看d3如何运行 点击查看在线DEMO

  function render(data){
    var demo = d3.select('body')
        .selectAll('p')
        .data(data, function (d) {
          return d;
        });
    demo.enter()
        .append('p')
        .style('width', 0+'px')
        .style('background', '#eee')
    demo
        .text(function (d) {
          return d;
        })
        .transition()
        .duration(1000)
        .style('width', function (d) {
          return d+'px';
        })
    demo.exit()
        .transition()
        .duration(1000)
        .style('width', 0+'px')
        .remove();
  }

  render([100,300,500]);

  setTimeout(function(){
    render([300,500,1000]);
  },1000)

通过链式风格的方式让整个运行步骤非常清晰,D3的API设计跟我们平时用的Jquery很像,所以理解起来比较容易。
Hello World示例展示了数据如何驱动页面展示,在render方法里通过数据的变化,它做到了初始化新数据更新已有数据删除无效数据这样一个完整的环节;

时间: 2024-11-04 07:26:04

【D3.js 学习总结】1、初识D3的相关文章

【D3.js 学习总结】4、D3 创建SVG

D3图表大都是由SVG来实现的,所以在继续学习前需要了解一些SVG的知识,可以通过看svg教程来学习一下. D3可以生成一般的SVG形状,它也内置了很多SVG图表,方便我们直接生成实用的图表. 我们先来创建一个SVG容器,其它SVG图形都需要在容器里来创建: var body = d3.select('body'); var svg = body.append('svg').attr('width',200).attr('height',200); 普通SVG 用D3来生成一般的SVG图形,可以

【D3.js 学习总结】24、D3几何 - 多边形 

d3.geom.polygon polygon函数有3个用途: polygon.area() 用来计算多边形面积: polygon.centroid() 用来计算多边形中心坐标: polygon.clip(subject) 用来处理2个多边形重叠时,返回重叠区域多边形,用来剪切的多边形需要是逆时针方向且是凸多边形: 通过一个示例来展示. 1.数据 // dataset0 用来做裁切主体,它的坐标需要是逆时针方向 var dataset0 = [[100,100],[100,300],[300,3

【D3.js 学习总结】2、D3数据绑定

我们从Hello World示例代码来看D3如何做数据绑定 var demo = d3.select('body') .selectAll('p') .data(data, function (d) { return d; }); 这段代码执行了以下步骤: 1.通过 d3.select('body') 将页面上的body标签选中:2.selectAll('p') 返回了一个p标签的空选集(selection):3.空选集通过 data() 方法将数据和p标签绑定,并产生三个虚拟的子集: ente

【D3.js 学习总结】26、D3地理地图

d3.geo 在学习D3如何制作地图前,我们需要了解下地图的数据格式geoJSON,GeoJSON是一种对各种地理数据结构进行编码的格式,基于Javascript对象表示法的地理空间信息数据交换格式. 本节我们将制作一幅中国地图,使用到的地图数据文件是从 Natural Earth 上的获取,经过提取后制作而成的,在本节入门篇中不细述地图数据的获取过程,将直接使用已经做好的数据,可通过以下链接下载查看中国地图数据. China GeoJSON 1.加载数据 d3.json('geoChina.j

【D3.js 学习总结】5、D3 SVG图表示例

之前有说到"D3制作图表的过程就是将各种SVG图形拼接在一起的过程",具体来说折线图表就是折线图+坐标轴的组合,面积图是折线图+坐标轴+面积图 一个完整的SVG图表,是包含了各种数据.SVG图形.样式.交互组成的组合体,我们以面积图表来做一个示例展示: CSS svg{ font-size: 12px; } .line{ fill:none; stroke-width:1; stroke:#000; } .axis line{ stroke: #000; stroke-width: 1

【D3.js 学习总结】10、D3布局-力学图

d3.layout.force() 力学图(也称为导向图,也有叫网络拓补图的,反正就是通过排斥得到关系远近的结构)在社交网络研究.信息传播途径等群体关系研究中应用非常广泛,它可以直观地反映群体与群体之间联系的渠道.交集多少,群体内部成员的联系强度等. 力学(Force)的API说明 force.on - 监听布局位置的变化.(仅支持"start","step","end"三种事件) force.nodes - 获得或设置布局中的节点(node)阵

【D3.js 学习总结】14、D3布局-打包图

d3.layout.pack() 打包图用于表示包含与被包含的关系,也可表示各对象的权重,通常用一圆套一圆来表示前者,用圆的大小来表示后者. 打包图(Pack)的API说明 pack.children - 取得或设置子节点的访问器. pack.links - 计算树节点中的父子链接. pack.nodes - 计算包布局并返回节点数组. pack.padding - 指定布局间距(以像素为单位) pack.radius - 指定节点半径(不是由值派生来的) pack.size - 指定布局尺寸.

【D3.js 学习总结】11、D3布局-弦图

d3.layout.chord() 弦图是一种用于描述节点之间联系的图表. 弦图(Chord)的API说明 chord.chords - 取回计算的弦角度. chord.groups - 取回计算的分组角度. chord.matrix - 取得或设置布局需要的矩阵数据. chord.padding - 取得或设置弦片段间的角填充. chord.sortChords - 取得或设置用于弦的比较器(Z轴顺序). chord.sortGroups - 取得或设置用于分组的比较器. chord.sort

【D3.js 学习总结】8、D3布局介绍

布局是 D3 中一个十分重要的概念,可以理解成 "制作常见图形的函数",有了它制作各种相对复杂的图表就方便多了. D3 与其它很多可视化工具不同,相对来说较底层,对初学者来说不太方便,但是一旦掌握了,就比其他工具更加得心应手. 下图展示了 D3 与其它可视化工具的区别: 布局的作用是:将不适合用于绘图的数据转换成了适合用于绘图的数据. D3 总共提供了 12 个布局: 饼状图(Pie) 力导向图(Force) 弦图(Chord) 捆图(Bundle) 直方图(Histogram) 堆栈