Skip to content

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

mingun edited this page May 22, 2014 · 4 revisions

ВикиСправка по APIШкалыКоличественные шкалы
English | Русский

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

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

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

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

# d3.scale.linear()

Конструирует новую линейную шкалу с умолчательными доменом и диапазоном [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. Метод равносилен тому, как если бы вы сконструировали оператор invert путём построения новой шкалы с поменяными местами доменом и диапазоном. Оператор invert особенно полезен при интерактивном взаимодействии, например, для определения значения во входном домене, соответствующего положению пикселя под курсором мыши.

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

# linear.domain([numbers])

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

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

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

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

# linear.range([values])

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

# linear.rangeRound(values)

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

# linear.interpolate([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. Возвращаемые значения засечек равномерно разбросаны по домену, имеют человеко-читаемые значения (например, степени десяти) и гарантированно находятся внутри входного домена. Засечки часто используются для отображения опорных линий или маркеров в сочетании с визуализированными данными. Указанное значения количества является всего лишь подсказкой; шкала может вернуть как больше, так и меньше значений, в зависимости от входного домена.

# linear.tickFormat(count, [format])

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

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

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

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

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

# linear.copy()

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

Единичные шкалы

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

# d3.scale.identity()

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

# identity(x)
# identity.invert(x)

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

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

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

# identity.ticks([count])

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

# identity.tickFormat(count, [format])

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

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

# identity.copy()

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

Степенн́ые шкалы

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

# d3.scale.sqrt()

Конструирует новую степенн́ую шкалу с умолчательными доменом и диапазоном [0, 1] и экспонентой 0.5. Этот метод — краткая запись:

d3.scale.pow().exponent(0.5)

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

# d3.scale.pow()

Конструирует новую степенн́ую шкалу с умолчательными доменом и диапазоном [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)

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

# pow.exponent([k])

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

# pow.interpolate([interpolator])

Если указан параметр 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. Возвращаемые значения засечек равномерно разбросаны по домену, имеют человеко-читаемые значения (например, кратные степени десяти) и гарантированно находятся внутри входного домена. Засечки часто используются для отображения опорных линий или маркеров в сочетании с визуализированными данными. Указанное значения количества является всего лишь подсказкой; шкала может вернуть как больше, так и меньше значений, в зависимости от входного домена.

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

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

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

# pow.copy()

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

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

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

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

# d3.scale.log()

Конструирует новую логарифмическую шкалу с умолчательными доменом и диапазоном [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. Метод равносилен тому, как если бы вы сконструировали оператор invert путём построения новой шкалы с поменяными местами доменом и диапазоном. Оператор invert особенно полезен при интерактивном взаимодействии, например, для определения значения во входном домене, соответствующего положению пикселя под курсором мыши.

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

# log.domain([numbers])

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

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

# log.range([values])

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

# log.rangeRound(values)

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

# log.base([base])

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

# log.interpolate([interpolator])

Если указан параметр 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, то некоторые из подписей засечек могут не отображаться; это полезно, если для всех засечек не хватает места. Тем не менее, сами засечки будут показаны (так что логарифмичексоке распределение на шкале всё ещё будет видно). Если определено количество count, вы также можете переопределить функцию форматирования format; вы можете определить спецификатор формата в виде строки и он будет автоматически обёрнут функцией d3.format. Например, для получения функции форматирования засечек, отображающей 20 засечек с валютой:

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

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

# log.copy()

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

Квантованные шкалы

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

# d3.scale.quantize()

Конструирует новую квантованную шкалу с умолчательными доменом и диапазоном [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') вернёт [0, 0.3333333333333333]

# quantize(x)

По указанному значению x входного домена возвращает соответствующее значение в выходном диапазоне.

# quantize.invertExtent(y)

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

# quantize.domain([numbers])

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

# quantize.range([values])

Если указан параметр values, устанавливает выходной диапазон шкалы в указанный массив значений. Массив может содержать любое количество чисел или дискретных значений. Элементы в переданном массиве не обязательно должны быть числами; будет работать любое значение любого типа. Если параметр 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])

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

# quantile.quantiles()

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

# quantile.copy()

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

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

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

# d3.scale.threshold()

Конструирует новую пороговую шкалу с умолчательными доменом [0.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'); // вернёт [undefined, 0]
t.invertExtent('b'); // вернёт [0, 1]
t.invertExtent('c'); // вернёт [1, undefined]

# threshold(x)

По указанному значению x входного домена возвращает соответствующее значение в выходном диапазоне.

# threshold.invertExtent(y)

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

# threshold.domain([domain])

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

# threshold.range([values])

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

# threshold.copy()

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

Clone this wiki locally