点刻度
点刻度是 带刻度 的变体,带宽固定为零。点刻度通常用于具有序数或分类维度的散点图。
scalePoint(domain, range)
示例 · 源代码 · 使用指定的 domain 和 range 创建一个新的点刻度,没有 填充,没有 舍入,且居中 对齐。如果未指定 domain,则默认为空域。如果未指定 range,则默认为单位范围 [0, 1]。
point(value)
示例 · 源代码 · 给定输入 域 中的 value,返回从输出 范围 派生的相应点。
const x = d3.scalePoint(["a", "b", "c"], [0, 960]);
x("a"); // 0
x("b"); // 480
x("c"); // 960
x("d"); // undefined
如果给定的 value 不在刻度域中,则返回 undefined。
point.domain(domain)
示例 · 源代码 · 如果指定了 domain,则将域设置为指定的值数组。
const x = d3.scalePoint([0, 960]).domain(["a", "b", "c", "d", "e", "f"]);
domain 中的第一个元素将映射到第一个点,第二个域值将映射到第二个点,依此类推。域值在内部存储在 InternMap 中,从原始值到索引;然后使用结果索引来确定点。因此,点刻度的值必须可以强制转换为原始值,并且原始域值唯一地标识了相应的点。如果未指定 domain,则此方法返回当前域。
point.range(range)
示例 · 源代码 · 如果指定了 range,则将刻度的范围设置为指定的两个元素数字数组,并返回此刻度。
const x = d3.scalePoint().range([0, 960]);
如果给定数组中的元素不是数字,它们将被强制转换为数字。如果未指定 range,则返回刻度的当前范围,默认为 [0, 1]。
point.rangeRound(range)
示例 · 源代码 · 将刻度的 range 设置为指定的两个元素数字数组,同时还启用 舍入;返回此刻度。
const x = d3.scalePoint().rangeRound([0, 960]);
这是一个等效于
point.range(range).round(true)
舍入有时可用于避免抗锯齿伪影,但也要考虑 shape-rendering “crispEdges” 样式。
point.round(round)
示例 · 源代码 · 如果指定了 round,则相应地启用或禁用舍入。
const x = d3.scalePoint(["a", "b", "c"], [0, 960]).round(false);
如果未指定 round,则返回是否启用了舍入。
x.round() // false
如果启用了舍入,则每个点的位置将为整数。舍入有时可用于避免抗锯齿伪影,但也要考虑 shape-rendering “crispEdges” 样式。请注意,如果域的宽度不是范围基数的倍数,即使没有填充,也可能存在剩余的未使用空间!使用 point.align 指定如何分配剩余空间。
point.padding(padding)
示例 · 源代码 · 如果指定了 padding,则将外部填充设置为指定的数字,该数字通常在 [0, 1] 范围内。
const x = d3.scalePoint(["a", "b", "c"], [0, 960]).padding(0.1);
如果未指定 padding,则返回当前外部填充,默认为 0。
x.padding() // 0.1
外部填充指定在第一个点之前和最后一个点之后保留的空白量,以 步长 的倍数表示。等效于 band.paddingOuter。
point.align(align)
示例 · 源代码 · 如果指定了 align,则将对齐方式设置为指定的值,该值必须在 [0, 1] 范围内。
const x = d3.scalePoint(["a", "b", "c"], [0, 960]).align(0.5);
如果未指定 align,则返回当前对齐方式,默认为 0.5。
x.align() // 0.5
对齐方式指定如何分配范围中任何剩余的未使用空间。值为 0.5 表示应在第一个点之前和最后一个点之后平均分配剩余空间;即,这些点应在范围内居中。值为 0 或 1 可用于将点移到一侧,例如将它们定位在轴旁边。