Spec-Zone.ru › D3.js 7

d3-scale

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

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

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

Этот репозиторий не предоставляет цветовые схемы; см. d3-scale-chromatic для цветовых схем, разработанных для работы с d3-scale.

Масштабирование не имеет собственного визуального представления. Однако большинство масштабов могут генерировать и форматировать метки для контрольных значений, что помогает в построении осей.

Для более подробного введения см. эти рекомендуемые учебные материалы:

  • Представление d3-scale Майком Босток

  • Глава 7. Масштабы Интерактивная визуализация данных для веб-приложений Скотта Мюррея

  • d3: масштабы и цвет. Жерома Кукиера

Установка

Если вы используете npm, npm install d3-scale. Вы также можете загрузить последнюю версию на GitHub. Для обычного HTML в современных браузерах импортируйте d3-scale из Skypack:

<script type="module">

import {scaleLinear} from "https://cdn.skypack.dev/d3-scale@4";

const x = scaleLinear();

</script>

Для устаревших сред вы можете загрузить пакет UMD d3-scale с CDN на базе npm, например, jsDelivr; экспортируется глобальная переменная d3.

<script src="https://cdn.jsdelivr.net/npm/d3-array@3"></script>
<script src="https://cdn.jsdelivr.net/npm/d3-color@3"></script>
<script src="https://cdn.jsdelivr.net/npm/d3-format@3"></script>
<script src="https://cdn.jsdelivr.net/npm/d3-interpolate@3"></script>
<script src="https://cdn.jsdelivr.net/npm/d3-time@3"></script>
<script src="https://cdn.jsdelivr.net/npm/d3-time-format@4"></script>
<script src="https://cdn.jsdelivr.net/npm/d3-scale@4"></script>
<script>

const x = d3.scaleLinear();

</script>

(Вы можете опустить d3-time и d3-time-format, если вы не используете d3.scaleTime или d3.scaleUtc.)

Ссылка на API

  • Непрерывные (Линейные, Степенные, Логарифмические, Идентичность, Временные, Радиальные)
  • Последовательные
  • Расходящиеся
  • Квантование
  • Квантили
  • Пороговые
  • Порядковые (Полосы, Точки)

Непрерывные масштабы

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

continuous(value) · Источник, Примеры

Учитывая значение из домена, возвращает соответствующее значение из диапазона. Если заданное значение находится вне домена, и закрепление не включено, отображение может быть экстраполировано таким образом, что возвращаемое значение находится вне диапазона. Например, чтобы применить кодирование положения:

var x = d3.scaleLinear()
    .domain([10, 130])
    .range([0, 960]);

x(20); // 80
x(50); // 320

Или чтобы применить кодирование цвета:

var color = d3.scaleLinear()
    .domain([10, 100])
    .range(["brown", "steelblue"]);

color(20); // "#9a3439"
color(50); // "#7b5167"

Или в сокращенном виде:

var x = d3.scaleLinear([10, 130], [0, 960]);
var color = d3.scaleLinear([10, 100], ["brown", "steelblue"]);
continuous.invert(value) · Источник, Примеры

Учитывая значение из диапазона, возвращает соответствующее значение из домена. Инвертирование полезно для взаимодействия, например, для определения значения данных, соответствующего положению указателя мыши. Например, для инвертирования кодирования положения:

var x = d3.scaleLinear()
    .domain([10, 130])
    .range([0, 960]);

x.invert(80); // 20
x.invert(320); // 50

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

Для допустимого значения y в диапазоне, continuous(continuous.invert(y)) приблизительно равно y; аналогично, для допустимого значения x в домене, continuous.invert(continuous(x)) приблизительно равно x. Масштаб и его обратное отображение могут не быть точными из-за ограничений точности с плавающей запятой.

continuous.domain([domain]) · Источник, Примеры

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

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

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

color(-0.5); // "rgb(255, 128, 128)"
color(+0.5); // "rgb(128, 192, 128)"

Внутренне, кусочный масштаб выполняет бинарный поиск интерполятора диапазона, соответствующего данному значению домена. Таким образом, домен должен быть в порядке возрастания или убывания. Если у домена и диапазона разная длина N и M, наблюдаются только первые min(N,M) элементы в каждом.

continuous.range([range]) · Источник, Примеры

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

continuous.rangeRound([range]) · Источник, Примеры

Устанавливает диапазон масштаба в указанный массив значений, а также устанавливает интерполятор масштаба в interpolateRound. Это удобный метод, эквивалентный:

continuous
    .range(range)
    .interpolate(d3.interpolateRound);

Интерполятор округления иногда полезен для избежания артефактов размытия, хотя также рассмотрите стили shape-rendering «crispEdges». Обратите внимание, что этот интерполятор может использоваться только с числовыми диапазонами.

continuous.clamp(clamp) · Источник, Примеры

Если указано clamp, включить или выключить закрепление соответственно. Если закрепление отключено и масштабу передается значение, выходящее за пределы домена, масштаб может вернуть значение, выходящее за пределы диапазона, с помощью экстраполяции. Если закрепление включено, возвращаемое значение масштаба всегда находится в диапазоне масштаба. Закрепление аналогично применяется к continuous.invert. Например:

var x = d3.scaleLinear()
    .domain([10, 130])
    .range([0, 960]);

x(-10); // -160, outside range
x.invert(-160); // -10, outside domain

x.clamp(true);
x(-10); // 0, clamped to range
x.invert(-160); // 10, clamped to domain

Если clamp не указан, возвращает, включено ли закрепление значений в пределах диапазона.

continuous.unknown([value]) · Источник, Примеры

Если указано value, устанавливает выходное значение масштаба для неопределенных (или NaN) входных значений и возвращает этот масштаб. Если value не указан, возвращает текущее неопределенное значение, которое по умолчанию равно undefined.

continuous.interpolate(interpolate) · Источник, Примеры

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

Например, рассмотрим шкалу различающихся цветов с тремя цветами в диапазоне:

var color = d3.scaleLinear()
    .domain([-100, 0, +100])
    .range(["red", "white", "green"]);

Два интерполятора создаются внутри шкалы, что эквивалентно:

var i0 = d3.interpolate("red", "white"),
    i1 = d3.interpolate("white", "green");

Общая причина указания пользовательского интерполятора — изменение цветового пространства интерполяции. Например, для использования HCL:

var color = d3.scaleLinear()
    .domain([10, 100])
    .range(["brown", "steelblue"])
    .interpolate(d3.interpolateHcl);

Или для Cubehelix с пользовательской гамма-функцией:

var color = d3.scaleLinear()
    .domain([10, 100])
    .range(["brown", "steelblue"])
    .interpolate(d3.interpolateCubehelix.gamma(3));

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

continuous.ticks([count])

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

continuous.tickFormat([count[, specifier]]) · Source, Примеры

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

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

var x = d3.scaleLinear()
    .domain([-1, 1])
    .range([0, 960]);

var ticks = x.ticks(5),
    tickFormat = x.tickFormat(5, "+%");

ticks.map(tickFormat); // ["-100%", "-50%", "+0%", "+50%", "+100%"]

Если specifier использует тип формата s, шкала вернёт формат с SI-префиксами, основанный на наибольшем значении в области определения. Если specifier уже задаёт точность, этот метод эквивалентен locale.format.

См. также d3.tickFormat.

continuous.nice([count]) · Source, Примеры

Расширяет область определения, чтобы она начиналась и заканчивалась на удобных круглых значениях. Этот метод, как правило, изменяет область определения шкалы, и может только расширить границы до ближайшего круглого значения. Необязательный аргумент количества делений count позволяет получить больший контроль над шагом, используемым для расширения границ, гарантируя, что возвращаемые деления будут точно покрывать область определения. Применение «удобных» значений полезно, если область определения вычисляется из данных, скажем, с помощью extent, и может быть нерегулярной. Например, для области определения [0.201479…, 0.996679…], «удобная» область определения может быть [0.2, 1.0]. Если область определения имеет более двух значений, «удобные» значения влияют только на первое и последнее значение.

См. также tickStep в d3-array.

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

continuous.copy() · Source, Примеры

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

d3.tickFormat(start, stop, count[, specifier]) · Source, Примеры

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

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

var tickFormat = d3.tickFormat(-1, 1, 5, "+%");

tickFormat(-0.5); // "-50%"

Если specifier использует тип формата s, шкала вернёт формат с SI-префиксами, основанный на большем абсолютном значении start и stop. Если specifier уже задаёт точность, этот метод эквивалентен locale.format.

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

d3.scaleLinear([[domain, ]range]) · Source, Примеры

Создаёт новую непрерывную шкалу со значениями указанной области определения и диапазона, интерполятором по умолчанию и отключенным ограничением. Если domain или range не указаны, они по умолчанию равны [0, 1]. Линейные шкалы — хороший выбор по умолчанию для непрерывных количественных данных, поскольку они сохраняют пропорциональные различия. Каждое значение диапазона y можно выразить как функцию значения области определения x: y = mx + b.

Шкалы степеней

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

d3.scalePow([[domain, ]range]) · Source, Примеры

Создаёт новую непрерывную шкалу со значениями указанной области определения и диапазона, показателем степени 1, интерполятором по умолчанию и отключённым ограничением. Если domain или range не указаны, они по умолчанию равны [0, 1]. (Обратите внимание, что это фактически линейная шкала, пока вы не зададите другой показатель степени.)

pow(value) · Source, Примеры

См. continuous.

pow.invert(value) · Source, Примеры

См. continuous.invert.

pow.exponent([exponent]) · Source, Примеры

Если exponent указан, устанавливает текущий показатель степени заданному числовому значению. Если exponent не указан, возвращает текущий показатель степени, который по умолчанию равен 1. (Обратите внимание, что это фактически линейная шкала, пока вы не зададите другой показатель степени.)

pow.domain([domain]) · Source, Примеры

См. continuous.domain.

pow.range([range]) · Source, Примеры

См. continuous.range.

pow.rangeRound([range]) · Source, Примеры

См. continuous.rangeRound.

pow.clamp(clamp) · Source, Примеры

См. continuous.clamp.

pow.interpolate(interpolate) · Source, Примеры

См. continuous.interpolate.

pow.ticks([count]) · Source, Примеры

См. continuous.ticks.

pow.tickFormat([count[, specifier]]) · Source, Примеры

См. continuous.tickFormat.

pow.nice([count]) · Source, Примеры

См. continuous.nice.

pow.copy() · Source, Примеры

См. continuous.copy.

d3.scaleSqrt([[domain, ]range]) · Source, Примеры

Создаёт новую непрерывную степенную шкалу со заданным диапазоном значений и диапазоном отображения, показателем степени 0,5, по умолчанию интерполятором и отключённой ограничительной функцией. Если диапазон значений или диапазон отображения не указаны, по умолчанию устанавливается [0, 1]. Это метод-костыль, эквивалентный d3.scalePow(…).exponent(0.5).

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

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

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

d3.scaleLog([[domain, ]range]) · Source, Примеры

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

log(value) · Source, Примеры

См. continuous.

log.invert(value) · Source, Примеры

См. continuous.invert.

log.base([base]) · Source, Примеры

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

log.domain([domain]) · Source, Примеры

См. continuous.domain.

log.range([range]) · Source, Примеры

См. continuous.range.

log.rangeRound([range]) · Source, Примеры

См. continuous.rangeRound.

log.clamp(clamp) · Source, Примеры

См. continuous.clamp.

log.interpolate(interpolate) · Source, Примеры

См. continuous.interpolate.

log.ticks([count]) · Source, Примеры

Подобно continuous.ticks, но адаптировано для логарифмической шкалы. Если основание — целое число, возвращаемые метки равномерно распределены в пределах каждой целой степени основания; в противном случае возвращается по одной метке на степень основания. Возвращаемые метки гарантированно находятся в пределах диапазона значений. Если порядок величин в диапазоне значений превышает count, то возвращается не более одной метки на степень. В противном случае значения меток не отфильтровываются, но обратите внимание, что вы можете использовать log.tickFormat для фильтрации отображения меток. Если count не указан, он по умолчанию равен 10.

log.tickFormat([count[, specifier]]) · Source, Примеры

Подобно continuous.tickFormat, но адаптировано для логарифмической шкалы. Указанное значение count обычно имеет то же значение, что и значение, используемое для генерации значений меток. Если меток слишком много, форматировщик может вернуть пустую строку для некоторых меток; однако обратите внимание, что метки всё равно отображаются. Чтобы отключить фильтрацию, укажите значение count как бесконечность. При указании значения счётчика вы также можете указать спецификатор формата или функцию форматирования. Например, чтобы получить форматировщик меток, отображающий 20 меток валюты, скажем log.tickFormat(20, "$,f"). Если в спецификаторе нет определённой точности, точность будет автоматически установлена шкалой, возвращая соответствующий формат. Это обеспечивает удобный способ указания формата, точность которого будет автоматически установлена шкалой.

log.nice() · Source, Примеры

Подобно continuous.nice, но расширяет диапазон значений до целых степеней основания. Например, для диапазона значений [0,201479…, 0,996679…], и основания 10, диапазон значений nice — [0,1, 1]. Если диапазон значений имеет более двух значений, то изменение диапазона значений nice влияет только на первое и последнее значение.

log.copy() · Source, Примеры

См. continuous.copy.

Шкалы symlog

См. A bi-symmetric log transformation for wide-range data by Webber для получения дополнительной информации.

d3.scaleSymlog([[domain, ]range]) · Source, Примеры

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

symlog.constant([constant]) · Source, Примеры

Если constant указано, устанавливает константу symlog в указанное число и возвращает эту шкалу; в противном случае возвращает текущее значение константы symlog, которое по умолчанию равно 1. Дополнительную информацию см. в статье «Бисимметричное логарифмическое преобразование для данных с широким диапазоном» Веббера.

Шкалы тождества

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

d3.scaleIdentity([range]) · Исходный код, Примеры

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

Радиальные шкалы

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

d3.scaleRadial([[domain, ]range]) · Исходный код, Примеры

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

Шкалы времени

Шкалы времени — это вариант линейных шкал со временной областью определения: значения области определения преобразуются в даты, а не в числа, и метод invert аналогично возвращает дату. Шкалы времени реализуют ticks, основанные на интервалах календаря, упрощая создание осей для временных областей определения.

Например, чтобы создать кодирование положения:

var x = d3.scaleTime()
    .domain([new Date(2000, 0, 1), new Date(2000, 0, 2)])
    .range([0, 960]);

x(new Date(2000, 0, 1,  5)); // 200
x(new Date(2000, 0, 1, 16)); // 640
x.invert(200); // Sat Jan 01 2000 05:00:00 GMT-0800 (PST)
x.invert(640); // Sat Jan 01 2000 16:00:00 GMT-0800 (PST)

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

d3.scaleTime([[domain, ]range]) · Исходный код, Примеры

Создаёт новую шкалу времени с указанной областью определения и областью значений, по умолчанию интерполятором и отключенной привязкой. Если domain не указан, он по умолчанию равен [2000-01-01, 2000-01-02]. Если range не указан, он по умолчанию равен [0, 1].

time(value) · Исходный код, Примеры

См. continuous.

time.invert(value) · Исходный код, Примеры

См. continuous.invert.

time.domain([domain]) · Исходный код, Примеры

См. continuous.domain.

time.range([range]) · Исходный код, Примеры

См. continuous.range.

time.rangeRound([range]) · Исходный код, Примеры

См. continuous.rangeRound.

time.clamp(clamp) · Исходный код, Примеры

См. continuous.clamp.

time.interpolate(interpolate) · Исходный код, Примеры

См. continuous.interpolate.

time.ticks([count]) · Исходный код, Примеры
time.ticks([interval])

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

Можно указать необязательный параметр count, чтобы повлиять на количество генерируемых отсчётов. Если count не указан, он по умолчанию равен 10. Указанное значение count является лишь подсказкой; шкала может вернуть больше или меньше значений в зависимости от области определения. Например, чтобы создать десять отсчётов по умолчанию, скажем:

var x = d3.scaleTime();

x.ticks(10);
// [Sat Jan 01 2000 00:00:00 GMT-0800 (PST),
//  Sat Jan 01 2000 03:00:00 GMT-0800 (PST),
//  Sat Jan 01 2000 06:00:00 GMT-0800 (PST),
//  Sat Jan 01 2000 09:00:00 GMT-0800 (PST),
//  Sat Jan 01 2000 12:00:00 GMT-0800 (PST),
//  Sat Jan 01 2000 15:00:00 GMT-0800 (PST),
//  Sat Jan 01 2000 18:00:00 GMT-0800 (PST),
//  Sat Jan 01 2000 21:00:00 GMT-0800 (PST),
//  Sun Jan 02 2000 00:00:00 GMT-0800 (PST)]

Следующие временные интервалы рассматриваются для автоматических отсчётов:

  • 1, 5, 15 и 30 секунд.
  • 1, 5, 15 и 30 минут.
  • 1, 3, 6 и 12 часов.
  • 1 и 2 дня.
  • 1 неделя.
  • 1 и 3 месяца.
  • 1 год.

Вместо count можно явно указать временной интервал. Чтобы обрезать сгенерированные отсчёты для данного временного интервала, используйте interval.every. Например, чтобы сгенерировать отсчёты через 15-минут интервалы:

var x = d3.scaleTime()
    .domain([new Date(2000, 0, 1, 0), new Date(2000, 0, 1, 2)]);

x.ticks(d3.timeMinute.every(15));
// [Sat Jan 01 2000 00:00:00 GMT-0800 (PST),
//  Sat Jan 01 2000 00:15:00 GMT-0800 (PST),
//  Sat Jan 01 2000 00:30:00 GMT-0800 (PST),
//  Sat Jan 01 2000 00:45:00 GMT-0800 (PST),
//  Sat Jan 01 2000 01:00:00 GMT-0800 (PST),
//  Sat Jan 01 2000 01:15:00 GMT-0800 (PST),
//  Sat Jan 01 2000 01:30:00 GMT-0800 (PST),
//  Sat Jan 01 2000 01:45:00 GMT-0800 (PST),
//  Sat Jan 01 2000 02:00:00 GMT-0800 (PST)]

В качестве альтернативы, передайте функцию проверки в interval.filter:

x.ticks(d3.timeMinute.filter(function(d) {
  return d.getMinutes() % 15 === 0;
}));

Примечание: в некоторых случаях, таких как с отсчётами дней, указание шага может привести к неравномерному расположению отсчётов, потому что временные интервалы имеют переменную длину.

time.tickFormat([count[, specifier]]) · Исходный код, Примеры
time.tickFormat([interval[, specifier]])

Возвращает функцию формата времени, подходящую для отображения значений отсчёта. Указанное значение count или interval в настоящее время игнорируется, но принимается для согласованности с другими шкалами, такими как continuous.tickFormat. Если указан спецификатор формата specifier, этот метод эквивалентен методу format. Если specifier не указан, возвращается формат времени по умолчанию. По умолчанию многомерный формат времени выбирает удобочитаемое представление, основанное на указанной дате следующим образом:

  • %Y - для границ года, таких как 2011.
  • %B - для границ месяца, таких как February.
  • %b %d - для границ недели, таких как Feb 06.
  • %a %d - для границ дня, таких как Mon 07.
  • %I %p - для границ часа, таких как 01 AM.
  • %I:%M - для границ минуты, таких как 01:23.
  • :%S - для границ секунды, таких как :45.
  • .%L - миллисекунды для всех остальных времён, таких как .012.

Хотя это немного необычно, такое поведение по умолчанию имеет преимущество в предоставлении как локального, так и глобального контекста: например, форматирование последовательности отсчётов как [23:00, Пн 07, 01:00] раскрывает информацию об часах, датах и днях одновременно, а не только о часах [23:00, 00:00, 01:00]. Обратитесь к d3-time-format, если вы хотите создать собственный условный формат времени.

time.nice([count]) · Исходный код, Примеры
time.nice([interval])

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

END_OF_DOCUMENT_MARKER

Необязательный аргумент count позволяет более точно управлять размером шага, используемого для расширения границ, гарантируя, что возвращаемые отметки будут точно покрывать область определения. В качестве альтернативы можно указать временной интервал, чтобы явно установить отметки. Если указан интервал, можно также указать необязательный шаг, чтобы пропустить некоторые отметки. Например, time.nice(d3.timeSecond.every(10)) будет расширять область определения до целых десяти секунд (0, 10, 20 и т. д.). Подробнее см. time.ticks и interval.every.

Нормализация полезна, если область определения вычисляется по данным, например, с помощью extent, и может быть нерегулярной. Например, для области определения [2009-07-13T00:02, 2009-07-13T23:48] нормализованная область определения составляет [2009-07-13, 2009-07-14]. Если область определения содержит более двух значений, нормализация области определения затрагивает только первое и последнее значения.

time.copy() · Исходный код, Примеры

См. continuous.copy.

d3.scaleUtc([[domain, ]range]) · Исходный код, Примеры

Эквивалентно scaleTime, но возвращаемая шкала времени работает в координированном универсальном времени, а не в местном времени.

Последовательные шкалы

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

d3.scaleSequential([[domain, ]interpolator]) · Исходный код, Примеры

Создает новую последовательную шкалу с заданной областью определения и функцией интерполяции или массивом. Если область определения не указана, она по умолчанию равна [0, 1]. Если интерполятор не указан, он по умолчанию является тождественной функцией. При применении шкалы интерполятор будет вызываться со значением, обычно в диапазоне [0, 1], где 0 представляет минимальное значение, а 1 — максимальное значение. Например, для реализации не слишком удачной цветовой схемы HSL радуги:

var rainbow = d3.scaleSequential(function(t) {
  return d3.hsl(t * 360, 1, 0.5) + "";
});

Более эстетично и перцептивно эффективно использовать циклическое кодирование оттенков с d3.interpolateRainbow:

var rainbow = d3.scaleSequential(d3.interpolateRainbow);

Если интерполятор является массивом, он представляет собой двуэлементный выходной диапазон шкалы и преобразуется в функцию интерполяции с использованием d3.interpolate.

sequential(value) · Исходный код, Примеры

См. continuous.

sequential.domain([domain]) · Исходный код, Примеры

См. continuous.domain. Обратите внимание, что область определения последовательной шкалы должна быть числовой и содержать ровно два значения.

sequential.clamp([clamp]) · Исходный код, Примеры

См. continuous.clamp.

sequential.interpolator([interpolator]) · Исходный код, Примеры

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

sequential.range([range]) · Исходный код, Примеры

См. continuous.range. Если range указан, заданный двуэлементный массив преобразуется в функцию интерполяции с использованием d3.interpolate.

sequential.rangeRound([range]) · Исходный код, Примеры

См. continuous.rangeRound. Если range указан, неявно используется d3.interpolateRound в качестве интерполятора.

sequential.copy() · Исходный код, Примеры

См. continuous.copy.

d3.scaleSequentialLog([[domain, ]range]) · Исходный код, Примеры

Последовательная шкала с логарифмическим преобразованием, аналогичная логарифмической шкале.

d3.scaleSequentialPow([[domain, ]range]) · Исходный код, Примеры

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

d3.scaleSequentialSqrt([[domain, ]range]) · Исходный код, Примеры

Последовательная шкала с преобразованием квадратного корня, аналогичная d3.scaleSqrt.

d3.scaleSequentialSymlog([[domain, ]range]) · Исходный код, Примеры

Последовательная шкала с симметричным логарифмическим преобразованием, аналогичная симметрической логарифмической шкале.

d3.scaleSequentialQuantile([[domain, ]range]) · Исходный код, Примеры

Последовательная шкала, использующая преобразование p-квантиля, аналогичную шкале квантилей.

sequentialQuantile.quantiles(n) · Исходный код, Примеры

Возвращает массив из n + 1 квантилей. Например, если n = 4, возвращает массив из пяти чисел: минимальное значение, первый квартиль, медиана, третий квартиль и максимальное значение.

Расходящиеся шкалы

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

d3.scaleDiverging([[domain, ]interpolator]) · Исходный код, Примеры

Создаёт новую расходящуюся шкалу с заданной областью определения и функцией интерполяции или массивом. Если область определения не указана, она по умолчанию равна [0, 0.5, 1]. Если интерполятор не указан, он по умолчанию является тождественной функцией. При применении шкалы интерполятор будет вызываться со значением, обычно в диапазоне [0, 1], где 0 представляет крайне отрицательное значение, 0.5 — нейтральное значение, а 1 — крайне положительное значение. Например, используя d3.interpolateSpectral:

var spectral = d3.scaleDiverging(d3.interpolateSpectral);

Если интерполятор является массивом, он представляет собой трёхэлементный выходной диапазон шкалы и преобразуется в функцию интерполяции с использованием d3.interpolate и d3.piecewise.

diverging(value) · Source, Примеры

См. continuous.

diverging.domain([domain]) · Source, Примеры

См. continuous.domain. Обратите внимание, что область значений шкалы типа diverging должна быть числовой и содержать ровно три значения. По умолчанию область значений равна [0, 0.5, 1].

diverging.clamp([clamp]) · Source, Примеры

См. continuous.clamp.

diverging.interpolator([interpolator]) · Source, Примеры

Если interpolator указан, устанавливает интерполятор шкалы на указанную функцию. Если interpolator не указан, возвращает текущий интерполятор шкалы.

diverging.range([range]) · Source, Примеры

См. continuous.range. Если range указан, заданный массив из трёх элементов преобразуется в функцию интерполяции с использованием d3.interpolate и d3.piecewise.

diverging.rangeRound([range]) · Source, Примеры

См. continuous.range. Если range указан, неявно используется d3.interpolateRound в качестве интерполятора.

diverging.copy() · Source, Примеры

См. continuous.copy.

diverging.unknown() · Source, Примеры

См. continuous.unknown.

d3.scaleDivergingLog([[domain, ]range]) · Source, Примеры

Шкала diverging с логарифмическим преобразованием, аналогичная шкале log.

d3.scaleDivergingPow([[domain, ]range]) · Source, Примеры

Шкала diverging с экспоненциальным преобразованием, аналогичная шкале power.

d3.scaleDivergingSqrt([[domain, ]range]) · Source, Примеры

Шкала diverging с преобразованием квадратного корня, аналогичная шкале d3.scaleSqrt.

d3.scaleDivergingSymlog([[domain, ]range]) · Source, Примеры

Шкала diverging с симметричным логарифмическим преобразованием, аналогичная шкале symlog.

Шкалы Quantize

Шкалы Quantize похожи на шкалы linear, за исключением того, что они используют дискретный, а не непрерывный диапазон. Непрерывная область значений входных данных делится на равные сегменты на основе количества значений (т. е. мощности) выходного диапазона. Каждое значение диапазона y может быть выражено как квантованная линейная функция значения области x: y = m round(x) + b. Пример использования см. на этой картах.

d3.scaleQuantize([[domain, ]range]) · Source, Примеры

Создаёт новую шкалу quantize со значениями domain и range. Если domain или range не указаны, по умолчанию устанавливаются [0, 1]. Таким образом, по умолчанию шкала quantize эквивалентна функции Math.round.

quantize(value) · Source, Примеры

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

var color = d3.scaleQuantize()
    .domain([0, 1])
    .range(["brown", "steelblue"]);

color(0.49); // "brown"
color(0.51); // "steelblue"

Или разделить область значений на три равные части с различными значениями диапазона для вычисления подходящей ширины штриха:

var width = d3.scaleQuantize()
    .domain([10, 100])
    .range([1, 2, 4]);

width(20); // 1
width(50); // 2
width(80); // 4
quantize.invertExtent(value) · Source, Примеры

Возвращает область значений в области значений [x0, x1] для соответствующего значения value в диапазоне: обратное преобразование quantize. Этот метод полезен для интерактивного взаимодействия, например, для определения значения в области, соответствующего позиции курсора на экране.

var width = d3.scaleQuantize()
    .domain([10, 100])
    .range([1, 2, 4]);

width.invertExtent(2); // [40, 70]
quantize.domain([domain]) · Source, Примеры

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

quantize.range([range]) · Source, Примеры

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

quantize.ticks([count]) · Source, Примеры

Эквивалентно continuous.ticks.

quantize.tickFormat([count[, specifier]]) · Source, Примеры

Эквивалентно continuous.tickFormat.

quantize.nice() · Source, Примеры

Эквивалентно continuous.nice.

quantize.thresholds() · Source, Примеры

Возвращает массив вычисленных пороговых значений в пределах области значений.

quantize.copy() · Source, Примеры

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

Шкалы Quantile

Масштабы квантилей отображают выборочный входной домен в дискретный диапазон. Домен рассматривается как непрерывный, и поэтому масштаб будет принимать любое разумное входное значение; однако домен задан как дискретный набор образцовых значений. Количество значений в выходном диапазоне (мощность) определяет количество квантилей, которые будут вычислены из домена. Для вычисления квантилей домен сортируется и рассматривается как совокупность дискретных значений; см. квантиль в d3-array. Смотрите этот пример с квантильной картограммой.

d3.scaleQuantile([[domain, ]range]) · Исходный код, Примеры

Создаёт новый масштаб квантилей со специфицированным доменом и диапазоном. Если домен или диапазон не указаны, каждый по умолчанию равен пустому массиву. Масштаб квантилей недействителен, пока не будут указаны и домен, и диапазон.

quantile(value) · Исходный код, Примеры

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

quantile.invertExtent(value) · Исходный код, Примеры

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

quantile.domain([domain]) · Исходный код, Примеры

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

quantile.range([range]) · Исходный код, Примеры

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

quantile.quantiles() · Исходный код, Примеры

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

quantile.copy() · Исходный код, Примеры

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

Масштабы порогов

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

d3.scaleThreshold([[domain, ]range]) · Исходный код, Примеры

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

threshold(value) · Исходный код, Примеры

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

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

color(-1);   // "red"
color(0);    // "white"
color(0.5);  // "white"
color(1);    // "green"
color(1000); // "green"
threshold.invertExtent(value) · Исходный код, Примеры

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

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

color.invertExtent("red"); // [undefined, 0]
color.invertExtent("white"); // [0, 1]
color.invertExtent("green"); // [1, undefined]
threshold.domain([domain]) · Исходный код, Примеры

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

threshold.range([range]) · Исходный код, Примеры

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

threshold.copy() · Исходный код, Примеры

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

Порядковые масштабы

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

d3.scaleOrdinal([[domain, ]range]) · Исходный код, Примеры

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

ordinal(value) · Исходный код, Примеры

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

ordinal.domain([domain]) · Источник, Примеры

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

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

ordinal.range([range]) · Источник, Примеры

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

ordinal.unknown([value]) · Источник, Примеры

Если значение указано, устанавливает выходное значение шкалы для неизвестных входных значений и возвращает эту шкалу. Если значение не указано, возвращает текущее неизвестное значение, которое по умолчанию неявное. Неявное значение позволяет неявно строить домен; см. ordinal.domain.

ordinal.copy() · Источник, Примеры

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

d3.scaleImplicit · Источник, Примеры

Специальное значение для ordinal.unknown, которое позволяет неявно строить домен: неизвестные значения неявно добавляются в домен.

Шкалы полос

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

band

d3.scaleBand([[domain, ]range]) · Источник, Примеры

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

band(value) · Источник, Примеры

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

band.domain([domain]) · Источник, Примеры

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

band.range([range]) · Источник, Примеры

Если диапазон указан, устанавливает диапазон шкалы указанному массиву из двух чисел. Если элементы в заданном массиве не являются числами, они будут приведены к числам. Если диапазон не указан, возвращает текущий диапазон шкалы, который по умолчанию равен [0, 1].

band.rangeRound([range]) · Источник, Примеры

Устанавливает диапазон шкалы заданному массиву из двух чисел, а также включает округление. Это вспомогательный метод, эквивалентный:

band
    .range(range)
    .round(true);

Округление иногда полезно для избежания артефактов антиалиасинга, но также рассмотрите стили shape-rendering «crispEdges».

band.round([round]) · Источник, Примеры

Если округление указано, включает или отключает округление соответственно. Если округление включено, начало и конец каждой полосы будут целыми числами. Округление иногда полезно для избежания артефактов антиалиасинга, но также рассмотрите стили shape-rendering «crispEdges». Обратите внимание, что если ширина домена не кратна количеству элементов диапазона, могут остаться неиспользованные области, даже без отступа! Используйте band.align для указания того, как распределяется оставшееся пространство.

band.paddingInner([padding]) · Источник, Примеры

Если отступ указан, устанавливает внутренний отступ в указанное число, которое должно быть меньше или равно 1. Если отступ не указан, возвращает текущий внутренний отступ, который по умолчанию равен 0. Внутренний отступ указывает долю диапазона, которая резервируется для пустого места между полосами; значение 0 означает отсутствие пустого места между полосами, а значение 1 означает bandwidth равное нулю.

band.paddingOuter([padding]) · Источник, Примеры

Если отступ указан, устанавливает внешний отступ в указанное число, которое обычно находится в диапазоне [0, 1]. Если отступ не указан, возвращает текущий внешний отступ, который по умолчанию равен 0. Внешний отступ определяет количество пустого места, в терминах кратных шага, которые резервируются перед первой полосой и после последней полосы.

band.padding([padding]) · Источник, Примеры

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

band.align([align]) · Источник, Примеры

Если align указано, устанавливает выравнивание на указанное значение, которое должно быть в диапазоне [0, 1]. Если align не указано, возвращает текущее выравнивание, которое по умолчанию равно 0,5. Выравнивание определяет, как распределяется внешний отступ в диапазоне. Значение 0,5 указывает, что внешний отступ должен быть равномерно распределен перед первой полосой и после последней полосы; т.е., полосы должны быть центрированы в пределах диапазона. Значение 0 или 1 может использоваться для смещения полос в одну сторону, например, для размещения их рядом с осью. Для получения более подробной информации, см. это объяснение.

band.bandwidth() · Исходный код, Примеры

Возвращает ширину каждой полосы.

band.step() · Исходный код, Примеры

Возвращает расстояние между началами смежных полос.

band.copy() · Исходный код, Примеры

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

Шкалы точек

Шкалы точек — это вариант шкал полос с шириной полосы, фиксированной в нуле. Шкалы точек обычно используются для диаграмм рассеяния с порядковой или категориальной размерностью. Неизвестное значение шкалы точек всегда неопределено: они не допускают неявного построения области.

point

d3.scalePoint([[domain, ]range]) · Исходный код, Примеры

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

point(value) · Исходный код, Примеры

При заданном значении в области ввода domain возвращает соответствующую точку, полученную из выходного диапазона. Если заданное значение не входит в область шкалы, возвращает неопределённое значение.

point.domain([domain]) · Исходный код, Примеры

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

point.range([range]) · Исходный код, Примеры

Если range указан, устанавливает диапазон шкалы в указанный двухэлементный массив чисел. Если элементы в данном массиве не являются числами, они будут приведены к числам. Если range не указан, возвращает текущий диапазон шкалы, который по умолчанию равен [0, 1].

point.rangeRound([range]) · Исходный код, Примеры

Устанавливает диапазон шкалы в указанный двухэлементный массив чисел, также включив округление. Это удобный метод, эквивалентный:

point
    .range(range)
    .round(true);

Округление иногда полезно для избежания артефактов размытия, хотя также следует учитывать стили shape-rendering «crispEdges».

point.round([round]) · Исходный код, Примеры

Если round задан, включает или выключает округление соответственно. Если округление включено, положение каждой точки будет целым числом. Округление иногда полезно для избежания артефактов размытия, хотя также следует учитывать стили shape-rendering «crispEdges». Обратите внимание, что если ширина области не является кратной мощности диапазона, может остаться неиспользованное пространство, даже без отступа! Используйте point.align для указания способа распределения оставшегося неиспользованного пространства.

point.padding([padding]) · Исходный код, Примеры

Если padding задан, устанавливает внешний отступ в указанное число, обычно в диапазоне [0, 1]. Если padding не задан, возвращает текущий внешний отступ, который по умолчанию равен 0. Внешний отступ определяет количество пустого места, в терминах кратных шага, для резервирования перед первой точкой и после последней точки. Эквивалентно band.paddingOuter.

point.align([align]) · Исходный код, Примеры

Если align задан, устанавливает выравнивание на указанное значение, которое должно быть в диапазоне [0, 1]. Если align не задан, возвращает текущее выравнивание, которое по умолчанию равно 0,5. Выравнивание определяет, как распределяется любое оставшееся неиспользованное пространство в диапазоне. Значение 0,5 указывает, что оставшееся пространство должно быть равномерно распределено перед первой точкой и после последней точки; т.е., точки должны быть центрированы в пределах диапазона. Значение 0 или 1 может быть использовано для смещения точек в одну сторону, например, для размещения их рядом с осью.

point.bandwidth() · Исходный код, Примеры

Возвращает ноль.

point.step() · Исходный код, Примеры

Возвращает расстояние между началами смежных точек.

point.copy() · Исходный код, Примеры

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

© 2010–2023 Michael Bostock
Licensed under the BSD License.
https://github.com/d3/d3-scale

Spec-Zone.ru

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