Javascript 有序尺度行为

Javascript 有序尺度行为,javascript,d3.js,Javascript,D3.js,我想创建一个有序的规模与一对一之间的范围和领域的对应关系。我希望不属于域的值/字符串不会返回任何内容。相反,我有以下行为: var x = d3.scaleOrdinal().domain(['a', 'b', 'c']).range([10, 20, 30]) x('d') 10 x('e') 20 x('f') 30 这种行为背后有什么逻辑吗?也许我遗漏了什么,但我找不到任何东西。这是有序量表的预期行为。实际上,D3量表(定量的或定性的)是以这样一种方式制作的,您可以在域外传递值(参见我的

我想创建一个有序的规模与一对一之间的范围和领域的对应关系。我希望不属于域的值/字符串不会返回任何内容。相反,我有以下行为:

var x = d3.scaleOrdinal().domain(['a', 'b', 'c']).range([10, 20, 30])
x('d')
10
x('e')
20
x('f')
30

这种行为背后有什么逻辑吗?也许我遗漏了什么,但我找不到任何东西。

这是有序量表的预期行为。实际上,D3量表(定量的或定性的)是以这样一种方式制作的,您可以在域外传递值(参见我的)

如果要为未知输入定义输出,请使用:

var x=d3.scaleOrdinal()
.domain(['a','b','c'])
.范围([10,20,30])
.未知(“不在范围内”);
console.log(“a是”+x(“a”));
console.log(“b是”+x(“b”);
console.log(“c是”+x(“c”);
console.log(“f是”+x(“f”);
log(“xyz是”+x(“xyz”)

非常感谢!一个后续问题:域外值的范围值是随机选择的还是有逻辑的?这本身就是一个好问题,我想知道同样的事情。因为,例如,如果您为条形图定义了一组颜色,一旦使用了所有颜色,d3将从头开始。因此,我希望这些值是d=>10,e=>20,f=>30。或者,如果d3识别字母顺序,我会期望d=>40,e=>50,f=>60。“但我不能对问题中所描述的行为置之不理。”保罗我编辑了这个问题。显然是我的浏览器导致了一个错误,打印x('e')等于10而不是20。Gerardo Furtado在回答中描述了正确的行为。然而,现在已经很清楚顺序尺度是如何表现的