Форматирование
Справочник API ▸ Основной модуль ▸ Форматирование
Форматирование чисел — это то, о чём обычно не задумываются, пока не увидишь на метках осей уродливую строку "0.30000000000000004". Возможно, вы захотите группировать тысячи для улучшения читаемости и использовать фиксированную точность, например, "$1 240,10". Или, может быть, вам нужно отобразить только значащие цифры определённого числа. D3 делает это лёгким с помощью стандартного формата чисел. Например, чтобы создать функцию, которая дополняет нулями до четырёх цифр, скажем:
var zero = d3.format("04d"); Теперь вы можете удобно форматировать числа:
zero(2); // "0002" zero(123); // "0123"
Помимо чисел, D3 также поддерживает форматирование и разбор дат и значений, разделенных запятыми.
Числа
d3.format(спецификатор)
Возвращает новую функцию форматирования со строковым спецификатором. (Эквивалентно locale.numberFormat для стандартного локализованного формата США). Функция форматирования принимает число в качестве единственного аргумента и возвращает строку, представляющую отформатированное число. Спецификатор формата моделируется по мини-языку спецификаций формата встроенного в Python 3.1 формата. Общий вид спецификатора:
[[fill]align][sign][symbol][0][width][,][.precision][type]
Заполнитель может быть любым символом, кроме "{" или "}". Наличие символа заполнения сигнализируется символом, который следует за ним, который должен быть одним из символов выравнивания.
Выравнивание может быть:
- ("<") Выравнивает поле по левому краю.
- (">") Выравнивает поле по правому краю. (По умолчанию).
- ("^") Выравнивает поле по центру.
Знак может быть:
- плюс ("+") — знак используется для положительных и отрицательных чисел.
- минус ("-") — знак используется только для отрицательных чисел. (По умолчанию).
- пробел (" ") — ведущий пробел используется для положительных чисел, а знак минус — для отрицательных чисел.
Символ может быть:
- валюта ("$") — указывает, что символ валюты должен быть префиксом (или суффиксом) в соответствии с локали. См. Локализация для получения дополнительной информации о том, как установить символ валюты локали.
- основание ("#") — для двоичного, восьмеричного или шестнадцатеричного вывода, соответственно, префикс "0b", "0o" или "0x".
Опция "0" включает нулевое заполнение.
Ширина определяет минимальную ширину поля. Если не указано, ширина определяется содержимым.
Опция запятая (",") включает использование запятой для разделителя тысяч.
Точность указывает количество цифр, которые должны быть отображены после десятичной точки для значения, отформатированного типами "f" и "%", или до и после десятичной точки для значений, отформатированных типами "g", "r" и "p".
Доступные значения типа:
- экспоненциальный ("e") — используется Number.toExponential.
- общий ("g") — используется Number.toPrecision.
- фиксированный ("f") — используется Number.toFixed.
- целый ("d") — используется Number.toString, но любые нецелые значения игнорируются.
- округленный ("r") — округляется до точности значащих цифр, заполняется нулями, если необходимо, аналогично фиксированному ("f"). Если точность не указана, используется общее представление.
- процент (%) — как фиксированное, но умножается на 100 и добавляется суффикс "%".
- округленный процент ("p") — как округленный, но умножается на 100 и добавляется суффикс "%".
- двоичный ("b") — выводит число в двоичной системе.
- восьмеричный ("o") — выводит число в восьмеричной системе.
- шестнадцатеричный ("x") — выводит число в шестнадцатеричной системе, используя строчные буквы для цифр больше 9.
- шестнадцатеричный ("X") — выводит число в шестнадцатеричной системе, используя прописные буквы для цифр больше 9.
- символ ("c") — преобразует целое число в соответствующий символ Юникода перед печатью.
- СИ-префикс ("s") — как округленное, но с присоединённым символом единицы, например, "9,5М" для мега или "1,00мк" для микро.
Тип "n" также поддерживается как сокращение для ",g".
d3.formatPrefix(значение[, точность])
Возвращает СИ-префикс для заданного значения. Если указана необязательная точность, то значение округляется соответствующим образом с помощью d3.round перед вычислением префикса. Возвращаемый объект префикса имеет два свойства:
- символ — символ префикса, например, "М" для миллионов.
- масштаб — функция масштабирования для преобразования чисел в соответствующий префиксный масштаб.
Например:
var prefix = d3.formatPrefix(1.21e9); console.log(prefix.symbol); // "G" console.log(prefix.scale(1.21e9)); // 1.21
Этот метод используется в d3.format для s формата.
d3.round(x[, n])
Возвращает значение x, округлённое до n знаков после десятичной точки. Если n опущено, оно по умолчанию равно нулю. Результат — число. Значения округляются до ближайшего кратного 10 в степени минус n; если два кратных одинаково близки, значение округляется в соответствии с встроенной функцией округления. Например:
d3.round(1.23); // 1 d3.round(1.23, 1); // 1.2 d3.round(1.25, 1); // 1.3 d3.round(12.5, 0); // 13 d3.round(12, -1); // 10
Обратите внимание, что полученное число при преобразовании в строку может быть неточным из-за точности IEEE с плавающей запятой; для форматирования числа в строку с фиксированным количеством десятичных знаков используйте d3.format вместо этого.
Строки
d3.requote(строка)
Возвращает цитируемую (экранированную) версию заданной строки таким образом, чтобы строка могла быть вставлена в регулярное выражение в качестве строковой литералы.
d3.requote("[]"); // "\[\]" Даты
См. модуль d3.time.
© 2010–2016 Michael Bostock
Licensed under the BSD License.
https://github.com/d3/d3-3.x-api-reference/blob/master/Formatting.md