[4] D3.js中使用scale(比例)
本人的个人博客为: www.ourd3js.com
csdn博客为: blog.csdn.net/lzhlzz
转载请注明出处,谢谢。
在上一节中使用了一个很重要的概念 — scale (这个不知道翻译成什么,暂且叫它比例)。本节将重点介绍它的相关使用方法。
在介绍 scale 之前,先介绍两个经常和 scale 一起出现的函数,在上一节中也出现了。
- d3.max()
- d3.min()
var dataset = [ 30, 20 , 52 , 2 , 11 ]; var result = d3.max( dataset );变量 result 中保存的是数组 dataset 的最大值 52。这是一维数组的用法,二维数组的用法如下:
var dataset = [ [ 30 , 20 ] , [ 52 , 2 ] , [ 90 , 11 ] ]; var result = d3.max( dataset , function(d){ return d[0]; } );如此,返回的值为90, 因为比较的是30,52,90这三个数,最后一行的 d[0] 就是指定每一个数组的第一个值。
var scale = d3.scale.linear(); scale.domain([0,20]) .range([0,100]); var result = scale(10);通过 d3.scale.linear() 指定要使用线性函数的 scale 。下两行指定 scale 的 domain 和 range ,这里分别为 [ 0 , 20 ] 和 [ 0 , 100 ],如果不指定,它们默认都为 [ 0 , 1 ] 。接下来调用 scale 函数,传了一个参数10个它,返回值保存在 result 中。 result 的值为多少呢, 是 10 。它是根据线性函数计算的。一定要记住, scale 是一个函数。
var scale = d3.scale.linear(); scale.domain([0,20,40]) .range([0,100,150]); var result = scale(30);这就是说有两个线性函数,当输入的值为30时,属于 domain (定义域)的20-40这个范围,那么输出为100-150这个范围。这里的30对应的值为125,所以 result 的值为125。
d3.scale.linear() 中还有一些方法,这里介绍两个:
- nice() ,改变函数的 domain ,能自动把 0.00000000000001 变为最接近它的 0 , 9.999999991 变为最接近它的 10
- rangeRound() , 能自动把输出变为最接近它的整数。
scale.domain([0.000000001,9.99999999991]) .range([0,100]) .nice();
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。