【 D3.js 进阶系列 — 2.2 】 力学图的參数
力学图的布局中有非常多參数。本文将逐个说明。
D3 中的力学图布局是使用韦尔莱积分法计算的。这是一种用于求解牛顿运动方程的数值方法,被广泛应用于分子动力学模拟以及视频游戏中。
定义布局的代码例如以下:
var force = d3.layout.force()
就可以。D3 中提供了 17 个函数用于设定其參数和事件。在全部布局中是最多的,以下将对其进行说明。
size()
用于设定力学图的作用范围。用法为 force.size( [ x , y ] ),这个函数用于指定两件事:
- 重力的重心位置为 ( x/2 , y/2 )
- 全部节点的初始位置限定为 [ 0 , x ] 和 [ 0 , y ] 之间(但并不是之后也是如此)
假设不指定,默觉得 [ 1 , 1 ] 。
linkDistance()
指定结点连接线的距离,默觉得20。假设距离是一个常数。那么各连接线的长度总是固定的;假设是一个函数。那么这个函数是作用于各连接线( source , target )的。
linkStrength()
指定连接线的坚硬度。值的范围为[ 0 , 1 ]。值越大越坚硬。
其直观感受是:
- 值为1。则拖动一个顶点A。与之相连的顶点会与A保持linkDistance设定的距离运动
- 值为0,则拖动一个顶点A,与之相连的顶点不会运动。连接线会被拉长
friction()
定义摩擦系数的函数。值的范围为[ 0 , 1 ]。默觉得0.9。可是这个值事实上并不是物理意义上的摩擦,事实上其意义更接近速度随时间产生的损耗,这个损耗是针对每个顶点的。
- 值为1,则没有速度的损耗。
- 值为0。则速度的损耗最大。
charge()
设定引力,是排斥还是吸引,默认值为-30。
- 值为+,则相互吸引。绝对值越大吸引力越大。
- 值为-。则互斥,绝对值越大排斥力越大。
chargeDistance()
设定引力的作用距离,超过这个距离,则没有引力的作用。
默认值为无穷大。
gravity()
以 size 函数设定的中心产生重力,各顶点都会向中心运动。默认值为0.1。也能够设定为0。则没有重力的作用。
theta()
顶点数假设过多,计算的时间就会加大(O(n log n))。theta 就是为了限制这个计算而存在的。默认值为0.8。这个值越小,就能把计算限制得越紧。
alpha()
设定动画运动的时间,超过时间后运动就会停止。
事实上
- force.start() 即 alpha(0.1)
- force.stop() 即 alpha(0)
谢谢阅读。
文档信息
- 版权声明:署名(BY)-非商业性(NC)-禁止演绎(ND)
- 发表日期:2014 年 11 月 15 日
- 很多其它内容:OUR D3.JS - 数据可视化专题站 和 CSDN个人博客
- 备注:本文发表于 OUR D3.JS 。转载请注明出处。谢谢
【 D3.js 进阶系列 — 2.2 】 力学图的參数的更多相关文章
- 【 D3.js 进阶系列 】 进阶总结
进阶系列的文章从去年10月开始写的,晃眼又是4个多月了,想在年前总结一下. 首先恭祝大家新年快乐.今年是羊年吧.前段时间和朋友聊天,聊到十二生肖里为什么没猫,我张口就道:不是因为十二生肖开会的时候猫迟 ...
- 【 D3.js 进阶系列 — 4.0 】 绘制箭头
转自:http://www.ourd3js.com/wordpress/?p=660 [ D3.js 进阶系列 — 4.0 ] 绘制箭头 发表于2014/12/08 在 SVG 绘制区域中作图,在绘制 ...
- 【 D3.js 进阶系列 — 2.1 】 力学图的事件 + 顶点的固定
本章讨论在力学图中经常使用到的事件( Event ),然后对[p=555">进阶 - 第 2.0 章]的人物关系图进行改进.使用户可以固定拖拽的对象. 在[入门 - 第 9.2 章]和 ...
- 【 D3.js 进阶系列 — 6.2 】 饼状图的拖拽
本文讲解稍微复杂一些的拖拽应用,即拖拽饼图的各部分. 在[入门 - 第 9.1 章]讲解了如何制作饼状图.饼状图的各部分是用具有宽度的弧线来表示的.在与用户进行交互的时候,如果每一部分都能拖拽,是很有 ...
- 【 D3.js 进阶系列 — 1.1 】 其它表格文件的读取
CSV 表格文件是以逗号作为单元分隔符的,其他还有以制表符 Tab 作为单元分隔符的 TSV 文件,还有人为定义的其他分隔符的表格文件.本文将说明在 D3 中怎样读取它们. 1. TSV 表格文件是什 ...
- 【 D3.js 进阶系列 — 1.2 】 读取 CSV 文件时乱码的解决方法
在 D3 中使用 d3.csv 读取 CSV 文件时,有时会出现乱码问题. 怎么解决呢? 1. 乱码问题 使用 d3.csv 读取 xxx.csv 文件时.假设 xxx.csv 文件使用的是 UTF- ...
- 【 D3.js 进阶系列 — 6.1 】 缩放的应用(Zoom)
缩放(Zoom)是另一种重要的可视化操作,主要是使用鼠标的滚轮进行. 1. zoom 的定义 缩放是由 d3.behavior.zoom() 定义的. var zoom = d3.behavior.z ...
- 【 D3.js 进阶系列 — 5.0 】 直方图
直方图用于描写叙述概率分布,D3 提供了直方图的布局 Histogram 用于转换数据. 假设有数组 a = [10, 11, 11.5, 12.5, 13, 15, 19, 20 ],如今把10~2 ...
- 【 D3.js 进阶系列 — 1.0 】 CSV 表格文件的读取
在入门系列的教程中.我们经常使用 d3.json() 函数来读取 json 格式的文件.json 格式非常强大.但对于普通用户可能不太适合,普通用户更喜欢的是用 Microsoft Excel 或 O ...
随机推荐
- 简述UIDatePicker的用法
1.Locale 设置DatePicker的地区,即设置DatePicker显示的语言. 1.跟踪所有可用的地区,取出想要的地区 NSLog(@"%@", [NSLocale av ...
- Spring AOP(aspect oriented programming) 转载
1.面向切面的基本原理 软件系统可以看成是由一组关注点组成的,其中,直接的业务关注点,是直切关注点.而为直切关注点提供服务的,就是横切关注点. 01.什么是面向切面编程 横切关注点:影响应用多处的功能 ...
- [ SCOI 2009 ] 最长距离
\(\\\) \(Description\) 一个\(N\times M\)的网格图中有一些坏点,图是四联通的. 你至多可以拿走\(K\)个坏点,求拿走后联通的点对中欧几里得距离最大是多少. \(N, ...
- html5——全屏滚动
鼠标滚轮 window.onmousewheel=function(){}; 基本描述 1.我们使用插件fullpage,为了更好的兼容性 2.动画效果是在滚动到这一屏时触发的,此时给当前屏幕加cur ...
- CNN结构:色彩特征提取-从RGB空间到HSV空间(色彩冷暖判断)
转自知乎和百度百科:从零开始学后期 文章: 冷暖色区分?冷暖肤色适用于那些色系的彩妆? 文章:干货 |如何判断人体色冷暖?如何判断色彩冷暖?(值得收藏研读!) -蒜苗 ...
- Android本地消息推送
项目介绍:cocos2dx跨平台游戏 项目需求:实现本地消息推送,需求①:定点推送:需求②:根据游戏内逻辑实现推送(比如玩家体力满时,需要计算后到点推送):需求③:清理后台程序或重启后依然能够实现本地 ...
- UICollectionView(一)基本概念
整体预览 高等级的包含和管理(Top-level containment and management) UICollectionView UICollectionViewController UIC ...
- 零基础学习Python培训,应该选择哪个培训班?
近几年中,Python一直是市场上最受欢迎的编程语言之一.它语法自然,入门简单,同时应用范围又极广,无论是大火的人工智能.大数据还是传统的web开发.自动化运维,Python都能够大展拳脚.根据职友集 ...
- .net 学习视频
http://www.iqiyi.com/a_19rrh9jx9p.html http://www.cnblogs.com/aarond/p/SQLDispatcher.html --读写分离 ht ...
- 基础命令history
history 记录历史命令 环境变量: HISTSIZE: 命令历史记录的条数: HISTFILE: 命令历史记录的文件,~/.bash_history: HISTFILESIZE: 命令历史 ...