缩放(Zoom)是另一种重要的可视化操作,主要是使用鼠标的滚轮进行。

1. zoom 的定义

缩放是由 d3.behavior.zoom() 定义的。

		var zoom = d3.behavior.zoom()
.scaleExtent([1, 10])
.on("zoom", zoomed); function zoomed() {
circles_group.attr("transform",
"translate(" + d3.event.translate + ")scale(" + d3.event.scale + ")");
}

第 2 行:scaleExtent 用于设置最小和最大的缩放比例

第 3 行:当 zoom 事件发生时,调用 zoomed 函数

第 5 - 8 行:zoomed 函数,用于更改需要缩放的元素的属性,d3.event.translate 是平移的坐标值,d3.event.scale 是缩放的值。

2. 绘制圆

与【进阶 - 第 6.0 章】一样,绘制两个圆用于测试。只是将圆 circle 元素添加到一个组 g 里,g 元素调用 call(zoom),zoom 为刚才定义的缩放行为。

		var circles_group = svg.append("g")
.call(zoom); circles_group.selectAll("circle")
.data(circles)
.enter()
.append("circle")
.attr("cx",function(d){ return d.cx; })
.attr("cy",function(d){ return d.cy; })
.attr("r",function(d){ return d.r; })
.attr("fill","black");

3. 结果

结果如下,在圆上滑动鼠标滚轮试试:

源代码单击以下链接后查看:

http://www.ourd3js.com/demo/J-6.1/zoom.html

谢谢阅读。

文档信息

【 D3.js 进阶系列 — 6.1 】 缩放的应用(Zoom)的更多相关文章

  1. 【 D3.js 进阶系列 】 进阶总结

    进阶系列的文章从去年10月开始写的,晃眼又是4个多月了,想在年前总结一下. 首先恭祝大家新年快乐.今年是羊年吧.前段时间和朋友聊天,聊到十二生肖里为什么没猫,我张口就道:不是因为十二生肖开会的时候猫迟 ...

  2. 【 D3.js 进阶系列 — 4.0 】 绘制箭头

    转自:http://www.ourd3js.com/wordpress/?p=660 [ D3.js 进阶系列 — 4.0 ] 绘制箭头 发表于2014/12/08 在 SVG 绘制区域中作图,在绘制 ...

  3. 【 D3.js 进阶系列 — 1.1 】 其它表格文件的读取

    CSV 表格文件是以逗号作为单元分隔符的,其他还有以制表符 Tab 作为单元分隔符的 TSV 文件,还有人为定义的其他分隔符的表格文件.本文将说明在 D3 中怎样读取它们. 1. TSV 表格文件是什 ...

  4. 【 D3.js 进阶系列 — 1.2 】 读取 CSV 文件时乱码的解决方法

    在 D3 中使用 d3.csv 读取 CSV 文件时,有时会出现乱码问题. 怎么解决呢? 1. 乱码问题 使用 d3.csv 读取 xxx.csv 文件时.假设 xxx.csv 文件使用的是 UTF- ...

  5. 【 D3.js 进阶系列 — 2.1 】 力学图的事件 + 顶点的固定

    本章讨论在力学图中经常使用到的事件( Event ),然后对[p=555">进阶 - 第 2.0 章]的人物关系图进行改进.使用户可以固定拖拽的对象. 在[入门 - 第 9.2 章]和 ...

  6. 【 D3.js 进阶系列 — 1.0 】 CSV 表格文件的读取

    在入门系列的教程中.我们经常使用 d3.json() 函数来读取 json 格式的文件.json 格式非常强大.但对于普通用户可能不太适合,普通用户更喜欢的是用 Microsoft Excel 或 O ...

  7. 【 D3.js 进阶系列 — 6.2 】 饼状图的拖拽

    本文讲解稍微复杂一些的拖拽应用,即拖拽饼图的各部分. 在[入门 - 第 9.1 章]讲解了如何制作饼状图.饼状图的各部分是用具有宽度的弧线来表示的.在与用户进行交互的时候,如果每一部分都能拖拽,是很有 ...

  8. 【 D3.js 进阶系列 — 5.0 】 直方图

    直方图用于描写叙述概率分布,D3 提供了直方图的布局 Histogram 用于转换数据. 假设有数组 a = [10, 11, 11.5, 12.5, 13, 15, 19, 20 ],如今把10~2 ...

  9. 【 D3.js 进阶系列 — 2.2 】 力学图的參数

    力学图的布局中有非常多參数.本文将逐个说明. D3 中的力学图布局是使用韦尔莱积分法计算的.这是一种用于求解牛顿运动方程的数值方法,被广泛应用于分子动力学模拟以及视频游戏中. 定义布局的代码例如以下: ...

随机推荐

  1. C++ 知道虚函数表的存在

    今天翻看陈皓大大的博客,直接找关于C++的东东,看到了虚函数表的内容,找一些能看得懂的地方记下笔记. 0 引子 类中存在虚函数,就会存在虚函数表,在vs2015的实现中,它存在于类的头部. 假设有如下 ...

  2. centos6环境下安装tmux

    Install tmux on CentOS 6:1. sudo rpm -ivh http://pkgs.repoforge.org/rpmforge-release/rpmforge-releas ...

  3. React之Froms

    In React, a <textarea> uses a value attribute instead. This way, a form using a <textarea&g ...

  4. testlink安装

    今天安装了一下testlink,完全按照高峻博客里的做法,最后安装成功了 遇到的问题: 问题表现: 新安装TestLink,登录Testlink后,新建一个项目后,会出现如下提示: There are ...

  5. POJ 题目1141 Brackets Sequence(区间DP记录路径)

    Brackets Sequence Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 27793   Accepted: 788 ...

  6. asp.net mvc api auth

    一.登录 /// <summary> /// 获取令牌 /// </summary> /// <param name="userName">用户 ...

  7. C++引用的作用和用法

    引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样. 引用的声明方法:类型标识符&引用名=目标变量名: 例如: int q; int &ra=a; 说明: &am ...

  8. url中

    url中汉字被转换为UTF-8,通过此网址可以解析UTF-8编码.在地址栏中输入文字或者其它的,则可能输入法或者是相关的程序进行解析. http://www.mytju.com/classcode/t ...

  9. ios上架报错90080,90087,90209,90125 解决办法

    ERROR ITMS-90087: "Unsupported Architectures. The executable for yht.temp_caseinsensitive_renam ...

  10. Vector和ArrayList的比较

    今天研究了一下Vector和ArrayList的源码,又加深了对这两个类的理解. List接口下一共实现了三个类:ArrayList,Vector,LinkedList.LinkedList就不多说了 ...