可视化工具–D3–比例尺的使用(quantitative)

序数比例尺的使用(ordinal)

http://blog.csdn.net/u014711869/article/details/72877335

d3js提供了多种比例尺可供选择,但总的来说分为两种,一种是quantitative(定量比例尺)一种是ordinal(序数比例尺),分别用于连续和不连续的数据。现在关于比例尺这一部分在v3和v4两个版本中的写法是有所区别的。(csdn的注释搞不定,注释格式请忽略)

首先说一下两个版本的区别

d3.scale.linear()

d3.scaleLinear()

虽然v4版本已经发布很久了,但是从我个人来说,还是习惯用上面v3的版本。
在d3里面使用的是链式结构,在linear scale中有一下方法:

"""这是基础方法,一般情况下简单图表这就足够了"""
d3.scale.linear()
        .domain()/*定义域*/
        .range()/*值域,可以用rangeRound()代替,这样的话输出值会进行四舍五入*/
        .ticks(n)/*主要用来坐标轴刻度,有一个默认值,应该是10*/
        .tickFormat(n,format)/*和ticks类似,不过可以返回自己设定的格式    */  
        .clamp(true)/*默认为false,如果不设置,输入超出定义域范围的值可能输出超出值域范围的值,如果设定,输出的最大最小值被限定在值域范围内,从我个人角度来看用到的不多*/
        .nice()/*是定义域更加规整,因为输入数据不可能会很规整,这样会对调试造成一定困扰,这样可以得到规整的定义域,由于可视化对精度的要求没有高到那种程度,因此调用这个方法是不会对最后结果有较大影响的*/
        .interpolate()/*设置差值,同样有interpolateRound的方法*/
        .copy()/*从已有变换中复制一个变换(api这样说的,但是我没用过)*/

除此之外还有两个方法:

linear(x)
linear.invert(y)

我通常在控制台用:

console.log(linear(x))
console.log(linear.invert(y))

在定量比例尺中还有指数比例尺,对数比例尺和平方根比例尺,基本方法和线性比例尺一样,只不过分别多了一个指定指数和指定对数的方法。

"""相同的方法在这里不赘述了"""
d3.scale.sqrt()

d3.scale.pow()
        .exponent()/*设置指数*/

d3.scale.log()
        .base()/*设置底数*/

官方给的API中还有一下几种比例尺类型

d3.scale.quantize()
d3.scale.threshold()
d3.scale.quantile()
d3.scale.identity()

其中quantize和quantile是很类似的,他们的定义域是连续的但是值域是离散的,通常做具有热力图效果的图时会用到。这两种方法是有区别的,区别是quantile根据中位数来分隔区间,quantize根据算数平均值来分隔区间。而且和上述有一个方法不太一样,是invertExtent()而不是invert()

threshold()是一个threshold(阈值)线性变换。他把定义域分为连续的n段,每一段与值域对应,也是把连续的定义域映射到离散值域中的方法。

identity()的方法官方给的说法是特殊的linear变换,因为我没用过(好像也没见到过),就不多说了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值