Подтвердить что ты не робот

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

Приветствуются любые предложения или подсказки.

4b9b3361

Ответ 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) + "%"; });

Работает для меня. Я получаю результаты с десятичными точками и процентом.