d3.scale.linear()vs d3.scaleLinear()

时间:2016-03-12 04:47:45

标签: javascript d3.js svg

嗨我正在查看documentation的缩放比例,它显示的是这样的格式var x = d3.scaleLinear([10,130]).range([0,960])我觉得这很奇怪,因为我在网上看到的大多数examples使用的是这样的:

var x = d3.scale.linear().domain([10,130]).range([0,960])并且有效。

如果我使用var x = d3.scaleLinear([10,130]).range([0,960]);,我会收到类似

的错误
  

TypeError:d3.scaleLinear不是函数

为什么您认为文档中的示例与我在网上示例中看到的内容之间存在差异?也许我不明白如何阅读文档。

编辑:This是衡量标准的当前文档。

4 个答案:

答案 0 :(得分:48)

要使用d3.js 版本3 创建线性比例,请使用API​​ d3.scale.linear()

并使用 版本4和5 创建线性比例,使用API​​ d3.scaleLinear()

可以在此处找到用于为两个版本创建线性比例的API参考:

v3.x scale.linear

v4.x scaleLinear

答案 1 :(得分:7)

您正在查看的文档是针对D3的插件 - 如何安装它将在同一页面上进一步说明。它最终将成为D3的下一个主要版本的一部分。

答案 2 :(得分:5)

他们正在做同样的事情,但只是代码更改发生在D3.js版本3 版本4 ......

因此,线性不再是 d3 框架的比例对象的属性......

使用 camelCase 语法代替d3的一部分......

所以d3.js v3 使用d3.scale.linear()

并使用 v4 创建线性比例,而不是使用d3.scaleLinear() ......

版本3:

  

<强> d3.scale.linear()

     

使用默认域[0,1]和。构造一个新的线性刻度   默认范围[0,1]。因此,默认线性刻度相当于   数字的身份函数;例如,线性(0.5)返回   0.5。

版本4:

  

<强> d3.scaleLinear()

     

使用单位域[0,1]构造一个新的连续标度   单位范围[0,1],默认插补器和钳位禁用。   线性刻度是连续定量的良好默认选择   数据,因为它们保持比例差异。每个范围值   y可以表示为域值x的函数:y = mx + b。

答案 3 :(得分:2)

正如Hina所指出的,d3scale.linear()用于D3 3.0,d3 4.0采用了平面命名空间约定。以下是d3更改日志摘要

的摘录
  

如果您不关心模块化,您可以忽略此更改并继续使用默认捆绑包。但是,采用ES6模块有一个不可避免的后果:D3 4.0中的每个符号现在共享一个平面命名空间而不是D3 3.x中的嵌套命名空间。例如,d3.scale.linear现在是d3.scaleLinear,...

来源:https://github.com/d3/d3/blob/master/CHANGES.md

编辑:忘记提及 - 要修复错误,您可能需要将链接或文件更新为程序中的d3。我直接从网站上打电话:

<script src="https://d3js.org/d3.v4.min.js"></script>