📅  最后修改于: 2023-12-03 15:00:17.910000             🧑  作者: Mango
D3.js是一个强大的JavaScript库,用于数据可视化和交互式图表。其中包含了多个类型的尺度(scale),其中连续尺度(continuous scales)可以将任意输入域映射到任意输出域。
本文将介绍D3.js连续尺度的完整API参考。
你可以通过NPM安装D3.js:
npm install d3
或者,在HTML中引用:
<script src="https://d3js.org/d3.v5.min.js"></script>
D3.js中的连续尺度,可以将输入域中的任意值映射到输出域中的任意值。在使用D3.js的连续尺度时,你需要明确以下几个核心概念:
创建一个线性比例尺。线性比例尺经常用于映射连续的,量化的域(如温度,海拔等)到一个常量域(如像素值,颜色等)。
一个转换函数,用于将输入域中任意值映射到输出域中的任意值。
// 创建一个线性比例尺,将0到10映射到100到200
var scale = d3.scaleLinear()
.domain([0, 10])
.range([100, 200]);
// 返回200
scale(10);
// 返回150
scale(5);
创建一个对数尺度。适用于在输入域中包含大量顺序数据,例如人口,金额等等。
一个转换函数,用于将输入域中任意值映射到输出域中的任意值。
//创建一个对数比例尺,将10^0 - 10^6映射到0 - 600
var scale = d3.scaleLog()
.domain([1, 1000000])
.range([0, 600]);
console.log(scale(1)) //0
console.log(scale(10)) //37.66
console.log(scale(100)) //75.32
console.log(scale(1000)) //112.98
console.log(scale(10000)) //150.64
console.log(scale(100000)) //188.3
console.log(scale(1000000)) //225.96
返回一个幂比例尺,该尺度将输入域中的值通过一次幂映射到输出域中的值。此尺度类似于线性缩放,但受到“指数”的放大或缩小。我们可以将这个尺度视作一种在输入域上执行的指数函数。
一个转换函数,用于将输入域中任意值映射到输出域中的任意值。
var scale = d3.scalePow()
.exponent(2)
.domain([0, 1])
.range([0, 10]);
console.log(scale(0.5)); // 5
返回一个平方根比例尺,该尺度将输入域中的值通过平方根映射到输出域中的值。此尺度类似于线性缩放,但受到“平方根”的放大或缩小。我们可以将这个尺度视作一种在输入域上执行的指数函数。
一个转换函数,用于将输入域中任意值映射到输出域中的任意值。
var scale = d3.scaleSqrt()
.domain([0, 100])
.range([0, 10]);
console.log(scale(50)); // 7.071
返回一个分段线性比例尺,该尺度将输入域中的值分段均分到输出域中,然后将输入值截取到最接近的输出值。
一个转换函数,用于将输入域中任意值映射到输出域中的任意值。
var scale = d3.scaleQuantize()
.domain([0, 10])
.range(["red", "green", "blue"]);
console.log(scale(3)); // "green"
返回一个分位比例尺,该尺度将输入域分段分配到输出域中。分位数是由输入域内数据的排列顺序决定的。
一个转换函数,用于将输入域中任意值映射到输出域中的任意值。
function makeData() {
return Array.from({length: 15}, () => Math.floor(Math.random() * 100));
}
var data = makeData();
var scale = d3.scaleQuantile()
.domain(data)
.range(["red", "green", "blue"]);
console.log(scale(20)); // "red"
console.log(scale(50)); // "green"
console.log(scale(80)); // "blue"
D3.js连续比例尺是可视化和交互式图表中非常有用的工具。无论其对于连续或离散的域,都可以映射输入域中的数据到输出域上。在本文中,我们介绍了D3.js的所有连续尺度。每种连续尺度都有不同的参数选项,可以在尺度转换时控制一些关键的因素。