zoukankan      html  css  js  c++  java
  • 比例尺---序数比例尺

    序数比例尺的定义域和值域都是离散的。如果需要通过输入一些离散的值得到另一些离散的值,这时候就要考虑序数比例尺。

    • d3.scale.orinal():构建一个序数比例尺
    • ordinal(x) :输入定义域内的一个离散值,返回值域内一个离散值
    • ordinal.domain([values]): 设定和获取定义域
    • ordinal.range([values]) :设定或获取值域
    • ordinal.rangePoint(interval,[padding]):接收一个连续的区间,然后根据定义域中离散值的数量将其分段,分段值即为值域的离散值。interval是区间,padding是边界部分留下的空白。
    • ordinal.rangeRoundPoints(interval,[padding]) :和ranggePoint()一样,但是会将结果取正
    • ordinal.rangeBands(interval,[padding],[outerpadding]) 代替 range()设定值域,接收一个连续的区间,然后根据定义域中离散值的数量将其分段,但是分段方法不同。
    • ordinal.rangeRoundBands():和rangeBands()一样,但是会将结果取整。
    • ordinal.rangeBand():返回使用rangeBands()设定后每一段的宽度。
    • ordinal.rangeExtend():返回一个数组,数组中存有值域的最大值和最小值。
    var ordinal = d3.scale.ordinal()
                    .domain([1,2,3,4,5])
                    .rangePoints([0,100]);
                    
    console.log( ordinal.range() );          //输出[0,25,50,75,100]
    console.log( ordinal(1) );                 //输出0
    console.log( ordinal(3) );                 //输出50
    console.log( ordinal(5) );                 //输出100
    //计算见下图
    ordinal.rangePoints([0,100],5);
    console.log( ordinal.range() );        //输出[27.77,38.88,50,61.11,72.22]
    
    ordinal.rangeRoundPoints([0,100],5);   
    console.log( ordinal.range() );        //输出[28,39,50,61,72]
    
    var bands = d3.scale.ordinal()
                    .domain([1,2,3,4,5])
                    .rangeBands([0,100]);
    //计算见下图
    console.log( bands.range() );           //输出[0,20,40,60,80]
    console.log( bands.rangeBand() );       //输出20
    
    bands.rangeBands([0,100],0.5,0.2);
    console.log( bands.range() );           //输出[4.081632653061225,24.489795918367346,44.89795918367347,65.3061224489796,85.71428571428571]
    console.log( bands.rangeBand() );       //输出10.204081632653061

    step的计算

    rangePoints中step的计算
                                                                           rangePoints中step的计算
    rangeBands中step的计算
                                                                        rangeBands中step的计算

    获取颜色的序数比例尺

    • d3.scale.category10():10种颜色
    • d3.scale.category20():20种颜色
    • d3.scale.category20b():20种颜色
    • d3.scale.category20c():20种颜色
      无论输入值是什么样的离散值,该比例尺都按照颜色顺序返回
    var color = d3.scale.category10();
    
    console.log( color(1) );       //输出颜色中的第一个
    console.log( color("zhangsan") );      //输出颜色中的第一个
    
    .attr("fill".function(d,i){
        return color(i);          //color是颜色比例尺,i是被绑定数据的索引hao
    })
  • 相关阅读:
    JS对象—字符串总结(创建、属性、方法)
    vue过滤器(filter)
    mac快捷键大全
    mac版 sublime快捷键大全
    mysql数据库—表的查询排序操作大全
    emmet的html和css使用技巧大全
    Java多线程——ReentrantLock源码阅读
    你真的懂ThreadPoolExecutor线程池技术吗?看了源码你会有全新的认识
    Java多线程——AQS框架源码阅读
    Java多线程——ReentrantReadWriteLock源码阅读
  • 原文地址:https://www.cnblogs.com/lmjZone/p/7739251.html
Copyright © 2011-2022 走看看