Ordinal Scales 序列比例尺

continuous scales 不同,序数比例尺的输出域和输入域都是离散的。例如序数比例尺可以将一组命名类别映射到一组颜色。或者确定一组条形图在水平方向的位置等等。

  1. var fn = d3.scaleOrdinal()
  2. .domain([0,1,2,3,4,5,6])
  3. .range(['a', 'b', 'c', 'd', 'e', 'f', 'g']);
  4. console.log(fn(0)); // a
  5. console.log(fn(2)); // c
  6. console.log(fn(7)); // a
  7. console.log(fn(8)); // b
  8. console.log(fn('ac')) // c
  9. // 设定如果传入非数值型值,返回什么值
  10. var __fn = fn.unknown(undefined);
  11. console.log(__fn('z')); // undefined // 如果是非数值的值, 超出边界
  12. console.log(__fn(8)); // b // 超出边界

颜色方案

d3-scale-chromatic

这个模块提供了用来表示序列、发散以及分类的颜色方案,它的设计是用来和 d3-scaled3.scaleOrdinald3.scaleSequential 结合使用。大多数的颜色方案都来自于 Cynthia A. BrewerColorBrewer。由于 ColorBrewer 只发布了离散的配色方案, 顺序和发散的颜色是通过 uniform B-splines 插值得到的。

  1. // 例如,要使用 Accent 颜色方案创建分类颜色比例尺:
  2. var accent = d3.scaleOrdinal(d3.schemeAccent);
  3. // 使用 Blues 颜色方案创建 9 色刻度尺:
  4. var blues = d3.scaleOrdinal(d3.schemeBlues[9]);
  5. // 使用 PiYG 颜色方案撞见发散的、连续的颜色比例尺:
  6. var piyg = d3.scaleSequential(d3.interpolatePiYG);

颜色属性

  1. d3.schemeCategory10 // 返回一个array[10]的数组

Quantize Scales 量化比例尺

量化比例尺与 linear scales 类似,但是其输出区间是离散的而不是连续的。连续的输入域根据输出域被分割为均匀的片段。每一个输出域中的值 y 都可以定义为输入域中 x 值的一个线性函数:x: y = m round(x) + b. 参考 bl.ocks.org/4060606 获取示例。

d3.scaleQuantize() 返回 quantize对象

  1. var color = d3.scaleQuantize()
  2. .domain([0, 1])
  3. .range(["brown", "steelblue"]);
  4. color(0.49); // "brown"
  5. color(0.51); // "steelblue"
  6. var width = d3.scaleQuantize()
  7. .domain([10, 100])
  8. .range([1, 2, 4]);
  9. width(20); // 1
  10. width(50); // 2
  11. width(80); // 4

quantize.invertExtent(value) 返回x对应y的取值范围

  1. var width = d3.scaleQuantize()
  2. .domain([10, 100]) // x
  3. .range([1, 2, 4]); // y
  4. width.invertExtent(2); // [40, 70]

quantize.range([range]) 略

quantize.ticks([count])

quantize.tickFormat([count[, specifier]])

quantize.nice()

quantize.copy()

Quantile Scales 分位数比例尺

分位数比例尺将一个离散的输入域映射到一个离散的输出域。输入域被认为是连续的,因此可以接受任何合理的输入值。但是输入域被指定为一组离散的样本值,输出域中的值的数量决定了分位数的数量。为了计算分位数,输入域中的值会被排序。并且作为 population of discrete values(离散值总体).
参考 d3-array 的 quantile。参考例子: bl.ocks.org/8ca036b3505121279daf

  1. // 参考例子
  2. d3.quantile(array, p[, accessor]) <源码>
  3. // 返回指定 有序数组 的 p-分位数, p 是 [0, 1] 之间的小数. 例如中位数相当于 p = 0.5, 使用 p = 0.25 计算第一个四分位数, p = 0.75 表示第三个四分位数. 这个方法也使用 R-7 方法. 例如:
  4. var a = [0, 10, 30];
  5. d3.quantile(a, 0); // 0
  6. d3.quantile(a, 0.5); // 10
  7. d3.quantile(a, 1); // 30
  8. d3.quantile(a, 0.25); // 5
  9. d3.quantile(a, 0.75); // 20
  10. d3.quantile(a, 0.1); // 2
  11. // 如果指定了 accessor 则相当于在计算之前调用了 array.map(accessor).

d3.scaleQuantile() 略 , API参考量化比例尺

Threshold Scales 阈值比例尺

阈值比例尺与 quantize scales 类似,只不过它们允许将输入域的任意子集映射到输入域的离散值。输入域依旧是连续的,并且会根据输出域分片。参考 bl.ocks.org/3306362

d3.scaleThreshold() 返回threshold对象

  1. var color = d3.scaleThreshold()
  2. .domain([0, 1])
  3. .range(["red", "white", "green"]);
  4. color(-1); // "red"
  5. color(0); // "white"
  6. color(0.5); // "white"
  7. color(1); // "green"
  8. color(1000); // "green"
  9. var color = d3.scaleThreshold()
  10. .domain([0, 1])
  11. .range(["red", "white", "green"]);
  12. color.invertExtent("red"); // [undefined, 0]
  13. color.invertExtent("white"); // [0, 1]
  14. color.invertExtent("green"); // [1, undefined]

Band Scales 分段比例尺

band分段比例尺

Point Scales 标点比例尺

point 标点比例尺