Spec-Zone.ru › D3.js 3

Количественные шкалы

Справочник API ▸ Шкалы ▸ Количественные шкалы

Шкалы — это функции, которые отображают входную область значений на выходной диапазон. Количественные шкалы имеют непрерывную область значений, например, множество вещественных чисел или дат. Также существуют порядковые шкалы, которые имеют дискретную область значений, например, множество имён или категорий. Шкалы — это необязательный функционал в D3; вы можете не использовать их, если предпочитаете сами производить вычисления. Однако использование шкал значительно упрощает код для отображения измерения данных в визуальном представлении.

Объект шкалы, например, возвращаемый d3.scale.linear, является одновременно объектом и функцией. То есть: вы можете вызвать шкалу как любую другую функцию, и у шкалы есть дополнительные методы для изменения её поведения. Как и другие классы в D3, шкалы следуют шаблону цепочки вызова методов, где методы-сеттеры возвращают саму шкалу, что позволяет вызывать несколько сеттеров в одном компактном выражении.

Линейные шкалы

Линейные шкалы являются наиболее распространёнными и хорошим выбором по умолчанию для отображения непрерывной входной области значений на непрерывный выходной диапазон. Отображение линейно в том смысле, что значение выходного диапазона y может быть выражено как линейная функция значения входной области x: y = mx + b. Входная область значений обычно представляет собой измерение данных, которые вы хотите визуализировать, например, рост учеников (в метрах) в выборке населения. Выходной диапазон обычно представляет собой измерение желаемой визуализации результата, например, высоту столбцов (в пикселях) в гистограмме.

Измерения состояния — это область значений, диапазон, интерполятор выходного значения и режим ограничения.

d3.scale.linear()

Создаёт новую линейную шкалу с областью значений по умолчанию [0,1] и диапазоном по умолчанию [0,1]. Таким образом, по умолчанию линейная шкала эквивалентна функции тождественного отображения для чисел; например, linear(0.5) возвращает 0.5.

linear(x)

Принимая значение x из входной области значений, возвращает соответствующее значение из выходного диапазона.

Примечание: некоторые интерполяторы переиспользуют возвращаемые значения. Например, если значения области значений — произвольные объекты, то автоматически применяется d3.interpolateObject, и шкала переиспользует возвращённый объект. Часто возвращаемое значение шкалы сразу используется для задания атрибута или стиля, и об этом не нужно беспокоиться; однако, если вам нужно сохранить возвращаемое значение шкалы, используйте приведение к строке или создайте копию как необходимо.

linear.invert(y)

Возвращает значение в входной области значений x для соответствующего значения в выходном диапазоне y. Это представляет обратное отображение из диапазона в область значений. Для допустимого значения y в выходном диапазоне linear(linear.invert(y)) равно y; аналогично, для допустимого значения x в входной области значений linear.invert(linear(x)) равно x. Аналогичным образом, вы можете создать оператор обратного отображения, создав новую шкалу, поменяв область значений и диапазон. Оператор обратного отображения особенно полезен для взаимодействия, например, для определения значения в входной области значений, соответствующего местоположению курсора в пикселях.

Примечание: оператор обратного отображения поддерживается только при численном выходном диапазоне! D3 допускает выходной диапазон любого типа; в основе лежит d3.interpolate или пользовательский интерполятор по вашему выбору для отображения нормализованного параметра t на значение в выходном диапазоне. Таким образом, выходной диапазон может содержать цвета, строки или даже произвольные объекты. Поскольку нет возможности «деинтерполировать» произвольные типы, оператор обратного отображения в настоящее время поддерживается только для числовых диапазонов.

linear.domain([numbers])

Если numbers указаны, задаёт входную область значений шкалы указанным массивом чисел. Массив должен содержать два или более числа. Если элементы в заданном массиве не являются числами, они будут приведены к числам; это приведение к числам происходит аналогично, когда вызывается шкала. Таким образом, линейная шкала может использоваться для кодирования таких типов, как объекты дат, которые могут быть преобразованы в числа; однако, часто удобнее использовать d3.time.scale для дат. (Вы можете реализовать свои собственные конвертируемые числовые объекты, используя valueOf.) Если numbers не указаны, возвращает текущую входную область значений шкалы.

Хотя линейные шкалы обычно имеют только два числовых значения в своей области значений, вы можете указать более двух значений для полилинейной шкалы. В этом случае должно быть эквивалентное количество значений в выходном диапазоне. Полилинейная шкала представляет собой несколько кусковых линейных шкал, которые делят непрерывную область значений и диапазон. Это особенно полезно для определения расходящихся количественных шкал. Например, чтобы интерполировать между белым и красным для отрицательных значений, и белым и зелёным для положительных значений, скажем:

var color = d3.scale.linear()
    .domain([-1, 0, 1])
    .range(["red", "white", "green"]);

Результат color(-.5) — rgb(255, 128, 128), а color(.5) — rgb(128, 192, 128). Внутренне полилинейные шкалы выполняют бинарный поиск для интерполятора выходного значения, соответствующего заданному значению области значений. Повторяя значения как в области значений, так и в диапазоне, вы также можете заставить часть входной области значений отображаться как константа в выходном диапазоне.

linear.range([values])

Если values указаны, задаёт выходной диапазон шкалы указанным массивом значений. Массив должен содержать два или более значений, чтобы соответствовать количеству элементов в входной области значений; в противном случае более длинный из двух массивов усекается для соответствия другому. Элементы в заданном массиве не обязательно должны быть числами; любое значение, поддерживаемое базовым интерполятором, будет работать. Однако для оператора обратного отображения необходимы числовые диапазоны. Если values не указаны, возвращает текущий выходной диапазон шкалы.

linear.rangeRound(values)

Задаёт выходной диапазон шкалы указанным массивом значений, одновременно устанавливая интерполятор шкалы в d3.interpolateRound. Это вспомогательная функция, когда выходные значения шкалы должны быть целыми числами, например, чтобы избежать артефактов дробления. Также можно округлить выходные значения вручную после применения шкалы.

linear.interpolate([factory])

Если factory указан, задаёт интерполятор выходного значения шкалы с помощью указанной factory. Интерполятор по умолчанию — d3.interpolate, и используется для отображения нормализованного параметра области значений t в [0,1] на соответствующее значение в выходном диапазоне. Интерполятор будет использоваться для построения интерполяторов для каждой смежной пары значений из выходного диапазона. Если factory не указан, возвращает интерполятор шкалы.

linear.clamp([boolean])

Если boolean указан, включает или выключает ограничение соответственно. По умолчанию ограничение отключено, так что если в шкалу передано значение, выходящее за пределы входной области значений, шкала может вернуть значение, выходящее за пределы выходного диапазона, путём линейной экстраполяции. Например, с областью значений и диапазоном по умолчанию [0,1] значение входа 2 вернёт выходное значение 2. Если ограничение включено, нормализованный параметр области значений t ограничен диапазоном [0,1], так что возвращаемое значение шкалы всегда находится в выходном диапазоне шкалы. Если boolean не указан, возвращает, включается ли в настоящее время ограничение значений до выходного диапазона.

linear.nice([count])

Расширяет область значений так, чтобы она начиналась и заканчивалась на красивых круглых значениях. Этот метод обычно изменяет область значений шкалы и может расширить границы до ближайшего круглого значения. Точность круглого значения зависит от диапазона области значений dx в соответствии со следующей формулой: exp(round(log(dx)) - 1). Улучшение полезно, если область значений вычисляется из данных и может быть нерегулярной. Например, для области значений [0.20147987687960267, 0.996679553296417] улучшенная область значений — [0.2, 1]. Если область значений содержит более двух значений, улучшение области значений влияет только на первое и последнее значение.

Необязательный аргумент count для подсчёта позволяет более точно управлять шагом, используемым для расширения границ, гарантируя, что возвращаемые точки разбиения точно охватывают область значений.

linear.ticks([count])

Безсостояние метод, который возвращает примерно count репрезентативных значений из входной области значений шкалы. Если count не указан, он по умолчанию равен 10. Возвращаемые значения точек разбиения равномерно распределены, имеют удобочитаемые значения (например, кратные степеням 10) и гарантированно находятся в пределах входной области значений. Точки разбиения часто используются для отображения справочных линий или делений в сочетании с визуализируемыми данными. Указанный count является лишь подсказкой; шкала может вернуть больше или меньше значений в зависимости от входной области значений.

linear.tickFormat(count, [format])

Безсостояние метод, который возвращает функцию форматирования чисел d3_format, подходящую для отображения значения точки разбиения. Указанный count должен быть таким же, как и счётчик, используемый для генерации значений точек разбиения. Вы не обязаны использовать встроенный формат точек разбиения шкалы, но она автоматически вычисляет подходящую точность на основе фиксированного интервала между точками разбиения.

Необязательный аргумент format позволяет указать спецификатор формата d3_format, где точность формата автоматически подставляется шкалой для соответствия интервалу точек разбиения. Например, чтобы отформатировать процентные изменения, вы можете сказать:

var x = d3.scale.linear().domain([-1, 1]);
console.log(x.ticks(5).map(x.tickFormat(5, "+%"))); // ["-100%", "-50%", "+0%", "+50%", "+100%"]

Аналогично, если format использует тип формата s, шкала вычислит префикс СИ, основанный на наибольшем значении в области значений, и использует этот префикс СИ для всех значений точек разбиения. Если format уже указывает точность, этот метод эквивалентен d3.format.

Обратите внимание, что при использовании логарифмической шкалы в сочетании с осью вы обычно хотите использовать axis.ticks, а не axis.tickFormat, чтобы воспользоваться пользовательским форматом точек разбиения логарифмической шкалы, как в bl.ocks.org/5537697.

linear.copy()

Возвращает точную копию этой линейной шкалы. Изменения в этой шкале не повлияют на возвращённую шкалу, и наоборот.

Шкалы тождественного преобразования

Масштабы тождества — это частный случай линейных масштабов, где область определения и область значений совпадают; масштаб и его обратная функция являются функцией тождества. Эти масштабы иногда полезны при работе с пиксельными координатами, например, в сочетании с компонентами оси и кисти.

d3.scale.identity()

Создаёт новый масштаб тождества с областью определения по умолчанию [0, 1] и областью значений по умолчанию [0, 1]. Масштаб тождества всегда эквивалентен функции тождества.

identity(x)
identity.invert(x)

Возвращает заданное значение x.

identity.domain([numbers])
identity.range([numbers])

Если numbers указано, устанавливает входную область определения и выходную область значений масштаба в указанный массив чисел. Массив должен содержать два или более чисел. Если элементы в заданном массиве не являются числами, они будут приведены к числовому типу; аналогично происходит при вызове масштаба. Если numbers не указано, возвращает текущую входную область определения масштаба (или, эквивалентно, выходную область значений).

identity.ticks([count])

Возвращает приблизительно count представительных значений из входной области определения масштаба (или, эквивалентно, выходной области значений). Если count не указано, оно по умолчанию равно 10. Возвращаемые значения делений равномерно распределены, имеют удобочитаемые значения (например, кратные степеням 10) и гарантированно находятся в пределах входной области определения. Деления часто используются для отображения справочных линий или делений шкалы совместно с визуализируемыми данными. Указанное count является лишь подсказкой; масштаб может вернуть больше или меньше значений в зависимости от входной области определения.

identity.tickFormat(count, [format])

Возвращает функцию форматирования чисел, подходящую для отображения значения деления. Указанное count должно иметь то же значение, что и счётчик, используемый для генерации значений делений. Вы не обязаны использовать встроенное форматирование делений масштаба, но оно автоматически вычисляет соответствующую точность на основе фиксированного интервала между значениями делений.

Необязательный аргумент format позволяет указать спецификатор форматирования. Если спецификатор форматирования не имеет определённой точности, точность будет установлена автоматически масштабом, возвращая соответствующее форматирование. Это обеспечивает удобный и декларативный способ указания формата, точность которого будет автоматически установлена масштабом.

identity.copy()

Возвращает точную копию этого масштаба. Изменения в этом масштабе не повлияют на возвращённый масштаб, и наоборот.

Масштабы степеней

Масштабы степеней похожи на линейные масштабы, за исключением того, что к значению входной области определения применяется экспоненциальное преобразование перед вычислением значения выходной области значений. Сопоставление со значением выходной области значений y можно выразить как функцию от значения входной области определения x: y = mx^k + b, где k — значение показателя степени. Масштабы степеней также поддерживают отрицательные значения, в этом случае входное значение умножается на -1, а результат выходного значения также умножается на -1.

d3.scale.sqrt()

Создаёт новый масштаб степени с областью определения по умолчанию [0,1], областью значений по умолчанию [0,1] и показателем степени .5. Этот метод — сокращённая запись для:

d3.scale.pow().exponent(.5)

Возвращаемый масштаб — это функция, которая принимает один аргумент x, представляющий значение в входной области определения; возвращаемое значение — соответствующее значение в выходной области значений. Таким образом, возвращаемый масштаб эквивалентен функции sqrt для чисел; например, sqrt(0.25) возвращает 0.5.

d3.scale.pow()

Создаёт новый масштаб степени с областью определения по умолчанию [0,1], областью значений по умолчанию [0,1] и показателем степени по умолчанию 1. Таким образом, масштаб степени по умолчанию эквивалентен функции тождества для чисел; например, pow(0.5) возвращает 0.5.

pow(x)

Для значения x во входной области определения возвращает соответствующее значение в выходной области значений.

Примечание: некоторые интерполяторы переиспользуют возвращаемые значения. Например, если значения области определения — произвольные объекты, то d3.interpolateObject применяется автоматически, и масштаб повторно использует возвращённый объект. Часто возвращаемое значение масштаба используется сразу для установки атрибута или стиля, и вам не нужно об этом беспокоиться; однако, если вам нужно сохранить возвращаемое значение масштаба, используйте приведение к строке или создайте копию, как это уместно.

pow.invert(y)

Возвращает значение во входной области определения x для соответствующего значения в выходной области значений y. Это представляет обратное отображение от области значений к области определения. Для действительного значения y в выходной области значений pow(pow.invert(y)) равно y; аналогично, для действительного значения x в входной области определения pow.invert(pow(x)) равно x. Эквивалентно, оператор invert можно построить, создав новый масштаб, поменяв местами область определения и область значений. Оператор invert особенно полезен для взаимодействия, например, для определения значения во входной области определения, соответствующего пиксельному расположению под указателем мыши.

Примечание: оператор invert поддерживается только для числовых областей значений! D3 допускает любой тип выходной области значений; под капотом используется d3.interpolate или пользовательский интерполятор по вашему выбору для сопоставления нормализованного параметра t со значением в выходной области значений. Таким образом, выходная область значений может быть цветами, строками или даже произвольными объектами. Поскольку нет механизма для «распознавания» произвольных типов, оператор invert в настоящее время поддерживается только для числовых областей значений.

pow.domain([numbers])

Если numbers указано, устанавливает входную область определения масштаба в указанный массив чисел. Массив должен содержать два или более чисел. Если элементы в заданном массиве не являются числами, они будут приведены к числовому типу; это приведение происходит аналогично при вызове масштаба. Таким образом, масштаб степени может использоваться для кодирования любого типа, который можно преобразовать в числа. Если numbers не указано, возвращает текущую входную область определения масштаба.

Как и в случае с линейными масштабами (см. linear.domain), масштабы степеней также могут принимать более двух значений для области определения и области значений, что приводит к полистепенному масштабу.

pow.range([values])

Если values указано, устанавливает выходную область значений масштаба в указанный массив значений. Массив должен содержать два или более значения, чтобы соответствовать кардинальности входной области определения, в противном случае более длинный из двух усекается для соответствия другому. Элементы в заданном массиве не обязательно должны быть числами; любое значение, поддерживаемое базовым интерполятором, подойдёт. Однако для оператора invert требуются числовые области значений. Если values не указано, возвращает текущую выходную область значений.

pow.rangeRound(values)

Устанавливает выходную область значений масштаба в указанный массив значений, одновременно устанавливая интерполятор масштаба в d3.interpolateRound. Это удобная процедура, когда значения, возвращаемые масштабом, должны быть точными целыми числами, например, для предотвращения артефактов дробления. Также можно округлить выходные значения вручную после применения масштаба.

pow.exponent([k])

Если k указано, устанавливает текущий показатель степени в указанное числовое значение. Если k не указано, возвращает текущий показатель степени. Значение по умолчанию — 1.

pow.interpolate([factory])

Если factory указано, устанавливает интерполятор выходной области масштаба, используя указанный factory. Интерполятор по умолчанию — d3.interpolate, и используется для сопоставления нормализованного параметра области определения t в [0,1] с соответствующим значением в выходной области значений. Интерполятор будет использоваться для построения интерполяторов для каждой пары смежных значений из выходной области значений. Если factory не указано, возвращает интерполятор масштаба.

pow.clamp([boolean])

Если boolean указано, соответственно включает или выключает привязку. По умолчанию привязка выключена, так что если значение, находящееся за пределами входной области определения, передаётся масштабу, масштаб может вернуть значение, находящееся за пределами выходной области значений, через линейную экстраполяцию. Например, с областью определения и областью значений по умолчанию [0,1], входное значение 2 вернёт выходное значение 2. Если привязка включена, нормализованный параметр области определения t привязывается к диапазону [0,1], так что возвращаемое значение масштаба всегда находится в выходной области значений масштаба. Если boolean не указано, возвращается, привязывает ли масштаб значения к выходной области значений.

pow.nice([m])

Расширяет область определения таким образом, чтобы она начиналась и заканчивалась на удобных круглых значениях. Этот метод обычно изменяет область определения масштаба и может расширить границы до ближайшего круглого значения. Точность круглого значения зависит от протяжённости области определения dx по следующей формуле: exp(round(log(dx)) - 1). Приведение к удобным значениям полезно, если область определения вычисляется по данным и может быть нерегулярной. Например, для области определения [0.20147987687960267, 0.996679553296417], удобная область определения — [0.2, 1]. Если область определения имеет более двух значений, приведение к удобным значениям влияет только на первое и последнее значение.

Необязательный аргумент m позволяет указать счётчик делений для управления шагом, используемым перед расширением границ.

pow.ticks([count])

Возвращает приблизительно count представительных значений из входной области определения масштаба. Если count не указано, оно по умолчанию равно 10. Возвращаемые значения делений равномерно распределены, имеют удобочитаемые значения (например, кратные степеням 10) и гарантированно находятся в пределах входной области определения. Деления часто используются для отображения справочных линий или делений шкалы совместно с визуализируемыми данными. Указанное count является лишь подсказкой; масштаб может вернуть больше или меньше значений в зависимости от входной области определения.

pow.tickFormat([count, [format]])

Возвращает функцию форматирования чисел, подходящую для отображения значения деления. Указанное count должно иметь то же значение, что и счётчик, используемый для генерации значений делений. Вы не обязаны использовать встроенное форматирование делений масштаба, но оно автоматически вычисляет соответствующую точность на основе фиксированного интервала между значениями делений.

Необязательный аргумент format позволяет указать спецификатор формата. Если у спецификатора формата нет заданной точности, точность будет автоматически установлена по масштабу, возвращая соответствующий формат. Это обеспечивает удобный декларативный способ задания формата, точность которого будет автоматически установлена по масштабу.

pow.copy()

Возвращает точную копию этого масштаба. Изменения в этом масштабе не повлияют на возвращённый масштаб, и наоборот.

Логарифмические масштабы

Логарифмические масштабы похожи на линейные масштабы, за исключением того, что к значению входной области x применяется логарифмическое преобразование перед вычислением значения выходного диапазона y. Сопоставление с выходным значением y можно выразить как функцию входного значения x: y = m log(x) + b.

Поскольку log(0) равен отрицательной бесконечности, логарифмический масштаб должен иметь либо исключительно положительную, либо исключительно отрицательную область значений; область не должна включать или пересекать ноль. Логарифмический масштаб с положительной областью значений имеет хорошо определённое поведение для положительных значений, а логарифмический масштаб с отрицательной областью значений имеет хорошо определённое поведение для отрицательных значений (значение входа умножается на -1, и результирующее выходное значение также умножается на -1). Поведение масштаба неопределено, если вы передаёте отрицательное значение логарифмическому масштабу с положительной областью значений или наоборот.

d3.scale.log()

Создаёт новый логарифмический масштаб с входной областью по умолчанию [1,10], выходным диапазоном по умолчанию [0,1] и основанием 10.

log(x)

Принимая значение x из входной области, возвращает соответствующее значение в выходном диапазоне.

Примечание: некоторые интерполяторы переиспользуют возвращаемые значения. Например, если значения области — произвольные объекты, то d3.interpolateObject автоматически применяется, и масштаб переиспользует возвращённый объект. Часто возвращаемое значение масштаба сразу используется для установки атрибута или стиля, и вам не нужно об этом беспокоиться; однако, если вам нужно сохранить возвращаемое значение масштаба, используйте приведение к строке или создайте копию, как это уместно.

log.invert(y)

Возвращает значение в входной области x для соответствующего значения в выходном диапазоне y. Это представляет обратное отображение от диапазона к области. Для допустимого значения y в выходном диапазоне log(log.invert(y)) равно y; аналогично, для допустимого значения x в входной области log.invert(log(x)) равно x. Аналогично, оператор обратного отображения можно построить, создав новый масштаб, поменяв входную и выходную области. Оператор обратного отображения особенно полезен для взаимодействия, например, для определения значения в входной области, соответствующего положению указателя мыши на пикселе.

Примечание: оператор обратного отображения поддерживается только если выходной диапазон числовой! D3 допускает, чтобы выходной диапазон был любого типа; под капотом используется d3.interpolate или пользовательский интерполятор по вашему выбору для сопоставления нормализованного параметра t со значением в выходном диапазоне. Таким образом, выходной диапазон может быть цветами, строками или даже произвольными объектами. Поскольку нет возможности «разобрать» произвольные типы, оператор обратного отображения в настоящее время поддерживается только для числовых диапазонов.

log.domain([numbers])

Если указаны numbers, устанавливает входную область масштаба в указанный массив чисел. Массив должен содержать два или более чисел. Если элементы в заданном массиве не являются числами, они будут приведены к числам; это приведение к числам происходит аналогично при вызове масштаба. Таким образом, логарифмический масштаб может использоваться для кодирования любого типа, который может быть преобразован в числа. Если numbers не указаны, возвращает текущую входную область масштаба.

Как и в линейных масштабах (см. linear.domain), логарифмические масштабы также могут принимать более двух значений для области и диапазона, что приводит к полилогарифмическому масштабу.

log.range([values])

Если указаны values, устанавливает выходной диапазон масштаба в указанный массив значений. Массив должен содержать два или более значений, чтобы соответствовать количеству элементов в входной области, в противном случае более длинный из двух усекается для соответствия другому. Элементы в данном массиве не обязательно должны быть числами; любое значение, поддерживаемое базовым интерполятором, подойдёт. Однако для оператора обратного отображения необходимы числовые диапазоны. Если values не указаны, возвращает текущий выходной диапазон масштаба.

log.rangeRound(values)

Устанавливает выходной диапазон масштаба в указанный массив значений, а также устанавливает интерполятор масштаба в d3.interpolateRound. Это удобная функция, когда значения, выводимые масштабом, должны быть точными целыми числами, например, чтобы избежать артефактов размытия. Также можно округлить выходные значения вручную после применения масштаба.

log.base([base])

Если указано base, устанавливает основание для этого логарифмического масштаба. Если base не указано, возвращает текущее основание, которое по умолчанию равно 10.

log.interpolate([factory])

Если указан factory, устанавливает интерполятор выходного масштаба с использованием указанного factory. Интерполятор по умолчанию — d3.interpolate, и он используется для сопоставления нормализованного параметра области t в [0,1] с соответствующим значением в выходном диапазоне. Интерполятор будет использоваться для построения интерполяторов для каждой смежной пары значений из выходного диапазона. Если factory не указан, возвращает интерполятор масштаба.

log.clamp([boolean])

Если указан boolean, соответственно включает или выключает привязку. По умолчанию привязка отключена, таким образом, если масштабу передаётся значение вне входной области, масштаб может вернуть значение вне выходного диапазона посредством линейной экстраполяции. Например, при значении области и диапазона по умолчанию [0,1] входное значение 2 вернёт выходное значение 2. Если привязка включена, нормализованный параметр области t привязывается к диапазону [0,1], поэтому возвращаемое значение масштаба всегда находится в выходном диапазоне масштаба. Если boolean не указан, возвращает, привязывает ли масштаб значения к выходному диапазону или нет.

log.nice()

Расширяет область значений, так чтобы она начиналась и заканчивалась на приятных округленных значениях. Этот метод обычно изменяет область значений масштаба и может расширить границы до ближайшего округленного значения. Ближайшее округлённое значение основано на целых степенях основания масштаба, которое по умолчанию равно 10. Применение функции «приятного» масштабирования полезно, если область значений вычисляется из данных и может быть нерегулярной. Например, для области значений [0.20147987687960267, 0.996679553296417] приятная область значений — [0.1, 1]. Если область значений имеет более двух значений, приятное масштабирование области влияет только на первое и последнее значение.

log.ticks()

Возвращает представительные значения из входной области масштаба. Возвращаемые значения делений равномерно распределены внутри каждой степени десяти и гарантированно находятся в пределах области входных данных. Деления часто используются для отображения опорных линий или делений вместе с визуализируемыми данными. Обратите внимание, что количество делений не настраивается (из-за природы логарифмических масштабов); однако вы можете отфильтровать возвращаемый массив значений, если хотите уменьшить количество делений.

log.tickFormat([count, [format]])

Возвращает функцию формата чисел, подходящую для отображения значения деления. Возвращаемый формат делений реализован как d.toPrecision(1). Если указан count, то некоторые метки делений могут не отображаться; это полезно, если нет места для отображения всех меток делений. Однако обратите внимание, что деления по-прежнему будут отображаться (так что искажение логарифмического масштаба останется видимым). При указании счётчика вы также можете переопределить функцию format; вы также можете указать спецификатор формата в виде строки, и он будет автоматически обернут с помощью d3.format. Например, чтобы получить форматировщик делений, который отобразит 20 меток валюты:

scale.tickFormat(20, "$,.2f");

Если у спецификатора формата нет заданной точности, точность будет автоматически установлена по масштабу, возвращая соответствующий формат. Это обеспечивает удобный декларативный способ задания формата, точность которого будет автоматически установлена по масштабу.

log.copy()

Возвращает точную копию этого масштаба. Изменения в этом масштабе не повлияют на возвращённый масштаб, и наоборот.

Масштабы квантования

Масштабы квантования — это разновидность линейных масштабов с дискретным, а не непрерывным диапазоном. Входная область по-прежнему непрерывна и делится на равномерные сегменты в зависимости от количества значений в выходном диапазоне. Отображение линейное, так как значение выходного диапазона y можно выразить как линейную функцию входного значения x: y = mx + b. Входная область обычно является измерением данных, которые вы хотите визуализировать, например, рост учащихся (в метрах) в выборке населения. Выходной диапазон обычно является измерением желаемой выходной визуализации, например, высоты столбцов (в пикселях) в гистограмме.

d3.scale.quantize()

Создаёт новый масштаб квантования с входной областью по умолчанию [0,1] и выходным диапазоном по умолчанию [0,1]. Таким образом, масштаб квантования по умолчанию эквивалентен функции round для чисел; например, quantize(0.49) возвращает 0, а quantize(0.51) возвращает 1.

 var q = d3.scale.quantize().domain([0, 1]).range(['a', 'b', 'c']);
 //q(0.3) === 'a', q(0.4) === 'b', q(0.6) === 'b', q(0.7) ==='c';
 //q.invertExtent('a') returns [0, 0.3333333333333333]
quantize(x)

Принимая значение x из входной области, возвращает соответствующее значение в выходном диапазоне.

quantize.invertExtent(y)

Возвращает диапазон значений в входной области [x0, x1] для соответствующего значения в выходном диапазоне y, представляющего обратное отображение от диапазона к области. Этот метод полезен для взаимодействия, например, для определения значения в входной области, которое соответствует положению указателя мыши на пикселе.

quantize.domain([numbers])

Если указаны numbers, устанавливает входную область масштаба в указанный массив из двух чисел. Если массив содержит более двух чисел, используются только первое и последнее числа. Если элементы в заданном массиве не являются числами, они будут приведены к числам; это приведение к числам происходит аналогично при вызове масштаба. Таким образом, масштаб квантования может использоваться для кодирования любого типа, который может быть преобразован в числа. Если numbers не указаны, возвращает текущую входную область масштаба.

quantize.range([values])

Если значения указаны, устанавливает диапазон вывода шкалы на указанный массив значений. Массив может содержать любое количество дискретных значений. Элементы в заданном массиве не обязательно должны быть числами; любое значение или тип будет работать. Если значения не указаны, возвращает текущий диапазон вывода шкалы.

quantize.copy()

Возвращает точную копию этой шкалы. Изменения в этой шкале не повлияют на возвращённую шкалу, и наоборот.

Квантильные шкалы

Квантильные шкалы сопоставляют входную область с дискретным диапазоном. Хотя входная область является непрерывной и шкала примет любое разумное входное значение, входная область задаётся как дискретное множество значений. Количество значений в диапазоне вывода определяет количество квантилей, которые будут вычислены из входной области. Для вычисления квантилей входная область сортируется и рассматривается как множество дискретных значений. Входная область обычно представляет собой измерение данных, которые вы хотите визуализировать, например, суточную динамику фондового рынка. Выходной диапазон обычно представляет собой измерение желаемой визуализации вывода, например, шкалу различающихся цветов.

d3.scale.quantile()

Создаёт новую квантильную шкалу с пустой областью определения и пустым диапазоном. Квантильная шкала недействительна до тех пор, пока не будут указаны область определения и диапазон.

quantile(x)

Принимая значение x во входной области, возвращает соответствующее значение в выходном диапазоне.

quantile.invertExtent(y)

Возвращает диапазон значений во входной области [x0, x1] для соответствующего значения в выходном диапазоне y, представляющего обратное отображение из диапазона в область определения. Этот метод полезен для взаимодействия, например, для определения значения во входной области, которое соответствует расположению пикселя под курсором.

quantile.domain([numbers])

Если numbers указаны, устанавливает входную область определения квантильной шкалы на указанное множество дискретных числовых значений. Массив не должен быть пустым и должен содержать по крайней мере одно числовое значение; значения NaN, null и undefined игнорируются и не считаются частью выборки. Если элементы в заданном массиве не являются числами, они будут приведены к числам; это приведение происходит аналогичным образом, когда вызывается шкала. Копия входного массива сортируется и хранится внутри. Таким образом, квантильная шкала может использоваться для кодирования любого типа, который может быть преобразован в числа. Если numbers не указаны, возвращает текущую входную область определения шкалы.

quantile.range([values])

Если значения указаны, устанавливает дискретные значения в выходном диапазоне. Массив не должен быть пустым и может содержать любые типы значений. Количество значений в массиве значений определяет количество квантилей, которые вычисляются. Например, чтобы вычислить квартили, значения должны быть массивом из четырёх элементов, например [0, 1, 2, 3]. Если значения не указаны, возвращает текущий выходной диапазон.

quantile.quantiles()

Возвращает пороговые значения квантилей. Если выходной диапазон содержит n дискретных значений, возвращаемый массив пороговых значений будет содержать n - 1 значение. Значения меньше первого элемента в массиве пороговых значений, quantiles()[0], считаются в первой квантили; большие значения меньше второго порога находятся во второй квантили и так далее. Внутри массив пороговых значений используется с d3.bisect для нахождения квантильного выходного значения, связанного с данным входным значением.

quantile.copy()

Возвращает точную копию этой шкалы. Изменения в этой шкале не повлияют на возвращённую шкалу, и наоборот.

Пороговые шкалы

Пороговые шкалы похожи на шкалы quantize, за исключением того, что они позволяют отображать произвольные подмножества области определения на дискретные значения в диапазоне. Входная область определения по-прежнему непрерывна и разделена на сегменты на основе набора пороговых значений. Входная область обычно представляет собой измерение данных, которое вы хотите визуализировать, например, рост студентов (в метрах) в выборке. Выходной диапазон обычно представляет собой измерение желаемой визуализации вывода, например, набор цветов (представленных в виде строк).

d3.scale.threshold()

Создаёт новую пороговую шкалу с функцией области определения по умолчанию [.5] и по умолчанию диапазоном [0,1]. Таким образом, пороговая шкала по умолчанию эквивалентна функции round для чисел; например, threshold(0.49) возвращает 0, а threshold(0.51) возвращает 1.

var t = d3.scale.threshold().domain([0, 1]).range(['a', 'b', 'c']);
t(-1) === 'a';
t(0) === 'b';
t(0.5) === 'b';
t(1) === 'c';
t(1000) === 'c';
t.invertExtent('a'); //returns [undefined, 0]
t.invertExtent('b'); //returns [0, 1]
t.invertExtent('c'); //returns [1, undefined]
threshold(x)

Принимая значение x во входной области, возвращает соответствующее значение в выходном диапазоне.

threshold.invertExtent(y)

Возвращает диапазон значений во входной области [x0, x1] для соответствующего значения в выходном диапазоне y, представляющего обратное отображение из диапазона в область определения. Этот метод полезен для взаимодействия, например, для определения значения во входной области, которое соответствует расположению пикселя под курсором.

threshold.domain([domain])

Если domain указан, устанавливает входную область определения шкалы на указанный массив значений. Значения должны быть в отсортированном порядке по возрастанию, в противном случае поведение шкалы не определено. Значения обычно являются числами, но будут работать и любые естественно упорядоченные значения (например, строки). Таким образом, пороговая шкала может использоваться для кодирования любого типа, который является упорядоченным. Если количество значений в диапазоне шкалы равно N + 1, количество значений в области определения шкалы должно быть N. Если элементов в области определения меньше, чем N, дополнительные значения в диапазоне игнорируются. Если элементов в области определения больше, чем N, шкала может возвращать неопределённое значение для некоторых входных значений. Если domain не указан, возвращает текущую входную область определения шкалы.

threshold.range([values])

Если значения указаны, устанавливает выходной диапазон шкалы на указанный массив значений. Если количество значений в области определения шкалы равно N, количество значений в диапазоне шкалы должно быть N + 1. Если элементов в диапазоне меньше, чем N + 1, шкала может возвращать неопределённое значение для некоторых входных значений. Если элементов в диапазоне больше, чем N + 1, дополнительные значения игнорируются. Элементы в заданном массиве не обязательно должны быть числами; любой тип значения будет работать. Если значения не указаны, возвращает текущий выходной диапазон.

threshold.copy()

Возвращает точную копию этой шкалы. Изменения в этой шкале не повлияют на возвращённую шкалу, и наоборот.

© 2010–2016 Michael Bostock
Licensed under the BSD License.
https://github.com/d3/d3-3.x-api-reference/blob/master/Quantitative-Scales.md

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API