web-dev-qa-db-ja.com

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

こんにちは私は documentation を見ており、このような形式を示していますvar x = d3.scaleLinear([10,130]).range([0,960]) I私がオンラインで見たほとんどの examples がこのようなものを使用しているため、これは奇妙だと感じます:

var x = d3.scale.linear().domain([10,130]).range([0,960])そしてそれは動作します。

var x = d3.scaleLinear([10,130]).range([0,960]);を使用すると、次のようなエラーが表示されます。

TypeError:d3.scaleLinearは関数ではありません

ドキュメントの例とオンラインの例で見たものに矛盾があると思うのはなぜですか?多分私はドキュメントの読み方を理解していない。

編集: これ は現在のスケールのドキュメントです。

29
jack blank

ご覧になっているドキュメントはD3のプラグインに関するものです。インストール方法については、同じページでさらに説明しています。最終的にはD3の次のメジャーリリースの一部になります。

7
Lars Kotthoff

D3.jsバージョン3で線形スケールを作成するには、API d3.scale.linear()を使用します

バージョン4および5を使用して線形スケールを作成するには、API d3.scaleLinear()を使用します

両方のバージョンの線形スケールを作成するためのAPIリファレンスは、次の場所にあります。

v3.x scale.linear

v4.x scaleLinear

51
Hina Dawood

彼らはまったく同じことをしていますが、それはD3.jsバージョンからバージョン4 ...に変更されるだけです.

線形は、d frameworkのscaleオブジェクトのプロパティではありません...

代わりに、camelCase構文のd3の一部です...

したがって、d3.jsv use d3.scale.linear()

v4で線形スケールを作成するには、代わりにd3.scaleLinear()を使用します...

バージョン3:

d3.scale.linear()

デフォルトのドメイン[0,1]とデフォルトの範囲[0,1]で新しい線形スケールを作成します。したがって、デフォルトの線形スケールは、数値の恒等関数と同等です。たとえば、linear(0.5)は0.5を返します。

バージョン4:

d3.scaleLinear()

単位領域[0、1]、単位範囲[0、1]、デフォルトの補間器およびクランプが無効な状態で、新しい連続スケールを構築します。線形スケールは、比例差を保持するため、連続定量データの適切なデフォルト選択です。各範囲値yは、ドメイン値xの関数として表現できます:y = mx + b。

5
Alireza

Hinaが指定したように、d3.scale.linear()はD3 3.0で使用され、d3 4.0はフラットな名前空間規約を採用しました。これは、d3 changelogの要約からの抜粋です

モジュール性を気にしない場合は、ほとんどこの変更を無視して、デフォルトのバンドルを使用し続けることができます。ただし、ES6モジュールを採用すると避けられない結果が1つあります。D34.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>
2
David Israwi