D3:Ordinal Scales & Band Scales

日期:2020-10-12
作者:18届 WRZ
标签:数据可视化

一.序数比例尺Ordinal Scales

序数比例尺的输入域和输出域都是离散的。它可以将输入域的值按照数据集中数据的顺序分别映射到输出域中。首先我们来定义一个序数比例尺

 var scale=d3.scale.Ordinal()
                   .domain(d3.range(3))
                   .range(["a","b","c"]);
 console.log(scale(0));

那么问题来了,此时打开浏览器的控制台
在这里插入图片描述
查阅官方文档后发现从D3 v4开始序数比例尺的定义已经不支持如上写法。其正确写法应为

 var scale=d3.scaleOrdinal()
              .domain(d3.range(3))
              .range(["a","b","c"]);
 console.log(scale(0));

执行后可以在控制台得到如下结果
在这里插入图片描述

  • ordinal.domain()
    如果指定了 domain 则将输入域设置为指定的数组。输入域中的元素次序与输出域中的元素次序一一对应。输入域在内部以字符串到索引的映射形式存储;索引值用来进行进行输出检索。因此,序数比例尺的值必须为字符串或者能被强制转为字符串的类型,并且必须唯一。
  var scale=d3.scaleOrdinal()
               .domain([1,1,2])
               .range(["a","b","c"]);
  console.log(scale(1));

此时控制台上显示的值仍为a,但其实1也可以映射到b,但是xScale(1)并不能区分这个1到底指代的是输入域中的哪个值。因此输入域中的值一定要是唯一的。
还应当注意的是在D3 V4中序数比例尺中不再支持rangeBands()和rangeRoundBands()方法。为了达到原来的效果,需要用到另外一种比例尺

二.分段比例尺Band Scales

分段比例尺的输入域仍然是离散的,但是输出域可以是连续的。分段比例尺的输出仍为离散的,离散的输出值是通过将连续的范围划分为均匀的分段。
在这里插入图片描述
现在来定义一个分段比例尺

            var scale=d3.scaleBand()
                        .domain([0,1,2,3])
                        .range([0,100]);
            console.log(scale(1));
            console.log(scale(2));
            console.log(scale(3));

此时控制台的结果如下:
在这里插入图片描述

  • band.rangeRound()方法
    将连续范围划分为均匀的分段,并且每一个分段的起点和终点都是整数。
  • band.paddingInner()和band.paddingOuter()
    取值范围为[0,1],表示间隔比例
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

中南大学苹果实验室

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值