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

Привет, я смотрю документация для весов и показывает формат, подобный этому var x = d3.scaleLinear([10,130]).range([0,960]) я чувствую, что это странно, потому что большинство примеров, которые я вижу в Интернете, используют что-то вроде этого:

var x = d3.scale.linear().domain([10,130]).range([0,960]) и он работает.

Если я использую var x = d3.scaleLinear([10,130]).range([0,960]);, я получаю ошибку, например

TypeError: d3.scaleLinear не является функцией

Почему, по вашему мнению, существует несоответствие между примерами в документации и тем, что я вижу в примерах в Интернете? может быть, я не понимаю, как читать документацию.

EDIT: Это - текущая документация для масштабов.

Ответ 1

Документация, которую вы ищете, для плагина для D3 - как ее установить, описано ниже на той же странице. В конечном итоге это станет частью следующего крупного выпуска D3.

Ответ 2

Чтобы создать линейный масштаб с d3.js версии 3, используйте API d3.scale.linear()

и для создания линейной шкалы с версиями 4 и 5 используйте API d3.scaleLinear()

Ссылки API для создания линейной шкалы для обеих версий можно найти здесь:

v3.x scale.linear

v4.x scaleLinear

Ответ 3

Они делают точно то же самое, но это просто изменение кода происходит с D3.js от версии 3 до версии 4...

Итак, линейная функция не является свойством объекта масштабирования структуры d3...

вместо этого это часть d3 с синтаксисом camelCase...

Итак 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.

Ответ 4

Как указано Hina, d3.scale.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

EDIT: Забыл упомянуть - чтобы исправить вашу ошибку, вам, возможно, придется обновить ссылку или файл на d3, который у вас есть в вашей программе. Я называю это непосредственно с веб-сайта:

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