zoukankan      html  css  js  c++  java
  • D3——比例尺、坐标轴

    当数组值过大或过小时选用比例尺

    var dataset_1 = [ 2.5 , 2.1 , 1.7 , 1.3 , 0.9 ];
    var dataset_2 = [ 2500, 2100, 1700, 1300, 900 ];

    线性比例尺

    线性比例尺,能将一个连续的区间,映射到另一区间。要解决柱形图宽度的问题,就需要线性比例尺。

    假设有以下数组:

    var dataset = [1.2, 2.3, 0.9, 1.5, 3.3];

    现有要求如下:

    将 dataset 中最小的值,映射成 0;将最大的值,映射成 300。

    代码如下:

    var min = d3.min(dataset);
    var max = d3.max(dataset);
    
    var linear = d3.scale.linear()
            .domain([min, max])
            .range([0, 300]);
    
    linear(0.9);    //返回 0
    linear(2.3);    //返回 175
    linear(3.3);    //返回 300

    其中,d3.scale.linear() 返回一个线性比例尺。domain() 和 range() 分别设定比例尺的定义域和值域。在这里还用到了两个函数,它们经常与比例尺一起出现:

    • d3.max()
    • d3.min()

    这两个函数能够求数组的最大值和最小值,是 D3 提供的。按照以上代码,

    比例尺的定义域 domain 为:[0.9, 3.3]

    比例尺的值域 range 为:[0, 300]

    有一点请大家记住:

    d3.scale.linear() 的返回值,是可以当做函数来使用的。因此,才有这样的用法:linear(0.9)。

    序数比例尺

    有时候,定义域和值域不一定是连续的。例如,有两个数组

    var index = [0, 1, 2, 3, 4];
    var color = ["red", "blue", "green", "yellow", "black"];
    var ordinal = d3.scale.ordinal()
            .domain(index)
            .range(color);
    
    ordinal(0); //返回 red
    ordinal(2); //返回 green
    ordinal(4); //返回 black

     二、坐标轴

         var axis = d3.svg.axis()
         .scale(linear)      //指定比例尺
         .orient("bottom")   //指定刻度的方向
         .ticks(7);          //指定刻度的数量



    svg.append("g") .attr("class","axis") .attr("transform","translate(20,130)")//设置坐标轴的位置 .call(axis);
  • 相关阅读:
    JS 寻路算法
    Fireworks基本使用
    html基础知识汇总(二)之Emmet语法
    JS函数式编程
    Web前端导航
    CSS样式一
    选择器的分类
    框架集
    表单标签元素
    图像热点&图像映射
  • 原文地址:https://www.cnblogs.com/dfghjkl/p/6374668.html
Copyright © 2011-2022 走看看