跳至内容

点刻度

点刻度是 带刻度 的变体,带宽固定为零。点刻度通常用于具有序数或分类维度的散点图。

scalePoint(domain, range)

示例 · 源代码 · 使用指定的 domainrange 创建一个新的点刻度,没有 填充,没有 舍入,且居中 对齐。如果未指定 domain,则默认为空域。如果未指定 range,则默认为单位范围 [0, 1]。

point(value)

示例 · 源代码 · 给定输入 中的 value,返回从输出 范围 派生的相应点。

js
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)

abcdef

示例 · 源代码 · 如果指定了 domain,则将域设置为指定的值数组。

js
const x = d3.scalePoint([0, 960]).domain(["a", "b", "c", "d", "e", "f"]);

domain 中的第一个元素将映射到第一个点,第二个域值将映射到第二个点,依此类推。域值在内部存储在 InternMap 中,从原始值到索引;然后使用结果索引来确定点。因此,点刻度的值必须可以强制转换为原始值,并且原始域值唯一地标识了相应的点。如果未指定 domain,则此方法返回当前域。

point.range(range)

示例 · 源代码 · 如果指定了 range,则将刻度的范围设置为指定的两个元素数字数组,并返回此刻度。

js
const x = d3.scalePoint().range([0, 960]);

如果给定数组中的元素不是数字,它们将被强制转换为数字。如果未指定 range,则返回刻度的当前范围,默认为 [0, 1]。

point.rangeRound(range)

示例 · 源代码 · 将刻度的 range 设置为指定的两个元素数字数组,同时还启用 舍入;返回此刻度。

js
const x = d3.scalePoint().rangeRound([0, 960]);

这是一个等效于

js
point.range(range).round(true)

舍入有时可用于避免抗锯齿伪影,但也要考虑 shape-rendering “crispEdges” 样式。

point.round(round)

abcdefghij

示例 · 源代码 · 如果指定了 round,则相应地启用或禁用舍入。

js
const x = d3.scalePoint(["a", "b", "c"], [0, 960]).round(false);

如果未指定 round,则返回是否启用了舍入。

js
x.round() // false

如果启用了舍入,则每个点的位置将为整数。舍入有时可用于避免抗锯齿伪影,但也要考虑 shape-rendering “crispEdges” 样式。请注意,如果域的宽度不是范围基数的倍数,即使没有填充,也可能存在剩余的未使用空间!使用 point.align 指定如何分配剩余空间。

point.padding(padding)

abcdefghij

示例 · 源代码 · 如果指定了 padding,则将外部填充设置为指定的数字,该数字通常在 [0, 1] 范围内。

js
const x = d3.scalePoint(["a", "b", "c"], [0, 960]).padding(0.1);

如果未指定 padding,则返回当前外部填充,默认为 0。

js
x.padding() // 0.1

外部填充指定在第一个点之前和最后一个点之后保留的空白量,以 步长 的倍数表示。等效于 band.paddingOuter

point.align(align)

abcdefghij

示例 · 源代码 · 如果指定了 align,则将对齐方式设置为指定的值,该值必须在 [0, 1] 范围内。

js
const x = d3.scalePoint(["a", "b", "c"], [0, 960]).align(0.5);

如果未指定 align,则返回当前对齐方式,默认为 0.5。

js
x.align() // 0.5

对齐方式指定如何分配范围中任何剩余的未使用空间。值为 0.5 表示应在第一个点之前和最后一个点之后平均分配剩余空间;,这些点应在范围内居中。值为 0 或 1 可用于将点移到一侧,例如将它们定位在轴旁边。

point.bandwidth()

示例 · 源代码 · 返回零。

point.step()

abcdefghij

示例 · 源代码 · 返回相邻点之间的距离。

point.copy()

示例 · 源代码 · 返回此刻度的精确副本。对此刻度的更改不会影响返回的刻度,反之亦然。