D3.js & nvd3.js и точное форматирование меток
Использование диаграммы с разбивкой по областям, как показано в этом примере
http://nvd3.com/ghpages/stackedArea.html
Попытка форматировать метки тика y-оси и ярлыки всплывающей подсказки для целых чисел, а не для float. Попробовал изменить следующий код из
chart.yAxis
.axisLabel('Users')
.tickFormat(d3.format(',.2f'));
к
chart.yAxis
.axisLabel('Users')
.tickFormat(d3.format(',.0d'));
Точность остается неизменной (все еще показывает значения в сотых местах). Я следил за Github Wiki безрезультатно https://github.com/mbostock/d3/wiki/Formatting#wiki-d3_format
Приветствуются любые предложения или подсказки.
Ответы
Ответ 1
Похоже, в данный момент это не поддерживается nvd3. См. Оскорбительную .
Кроме того, ваша спецификация формата не совсем правильная. Как указано в документации, "d"
игнорирует нецелые значения. Таким образом, вы, вероятно, захотите ",.0f"
, а это значит:
-
,
: используйте запятые для разделения тысяч.
-
.0
: точность нуля (точный смысл этого зависит от того, какой тип используется).
-
f
: тип; в этом случае Number.toFixed. Это означает, что после десятичной точки появляется фиксированное число цифр (точность), и при необходимости число округляется.
Ответ 2
Метод .tickFormat
метода .yAxis
не обновляет его должным образом. Это работа, которую я использовал:
chart.yAxisTickFormat(d3.format(',.0d'));
Ответ 3
можно форматировать текст меток от float до integer.
для круговой диаграммы:
chart.pie.valueFormat(d3.format(',.0d'));
для линейной диаграммы:
chart.yAxisTickFormat(d3.format(',.0d'));
Ответ 4
Я пробовал вот так
.axisLabel('%').tickFormat(function(d) { return parseFloat(d).toFixed(1) + "%"; });
Работает для меня. Я получаю результаты с десятичными точками и процентом.