d3中常见比例尺
连续型比例尺d3.scaleLinear()
使用d3.scaleLinear()
创建一个连续型的比例尺,向domain
中提供一个数组,会在range
中得到相应的映射值。
const scale1 = d3
.scaleLinear()
.domain([10, 130])
.range([0, 960]);
console.log(scale1(30)); //160
console.log(scale1(50)); //320
如果scale1
传一个超出domain
范围的值,会输出什么?
scale1(500)
结果输出3919.9999999999995
,可见,该比例尺并不限制你传递的值是否在domain
数组范围内,它都会帮你做转换。
序数段比例尺d3.scaleBand()
domain
为一个数组,range
是一个连续的域
const scale1 = d3
.scaleBand()
.domain([1, 2, 3, 4])
.range([0, 960]);
console.log(scale1(1)); // 0
console.log(scale1(2)); // 240
console.log(scale1(50)); // undefined
可看到,如果在此处传递domain
数组中不存在的值将会返回undefined
。
序数比例尺d3.scaleOrdinal()
该比例尺中,domain
中的值和range
中的值是一一对应的,可以看作是离散数据。
const scale1 = d3
.scaleOrdinal()
.domain([1, 2, 3, 4])
.range([0, 960, 6, 10]);
console.log(scale1(2)); //960
console.log(scale1(3)); //6
但是,如果输入不相关值的时候,它也能返回值,例如
console.log(scale1(20)); //0
所以,在传递值的时候要确保值的正确性。
量化比例尺d3.scaleQuantize()
domain
中属于连续的值,而range
中属于离散的值。
const scale1 = d3
.scaleQuantize()
.domain([0, 1])
.range(["brown", "steelblue"]);
console.log(scale1(1)); //steelblue
console.log(scale1(0.2)); //brown
通过计算给定值,返回在range
中的映射位置。
最后,还有时间比例尺d3.scaleTime()
,颜色比例尺等,详细参见官方文档。
如果您觉得本文对您有用,欢迎捐赠或留言~
- 本博客所有文章除特别声明外,均可转载和分享,转载请注明出处!
- 本文地址:https://www.leevii.com/?p=1180