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

D3.js: tickformat - добавление знака% без умножения на 100

мои данные имеют проценты, например, [10.1, 3.2, 5.4]

d3.format("0f") даст мне [10, 3, 5]

d3.format("0%") даст мне [1010%, 320%, 540%] (умножается на 100)

как мне получить [10%, 3%, 5%]?

Я не могу понять, где добавить + "%" в первый случай или устранить * 100 во втором случае

соответствующие части кода:

var formatPercent = d3.format("0f");

var min = 0; 
var max = d3.max(data, function(d) { return + d[5]; });
max = Math.round(max * 1.2); // pad it

//define the x-axis
var xAxis = d3.svg.axis()
                .scale(x)
                .orient('top')
                .ticks(6)
                .tickFormat(formatPercent);

и данные поступают следующим образом:

{
    "Geography": [
    ["Midwest", 234017797, 498, 8.2, 9.0, 11.3],
    ["Northeast", 265972035, 566, 8.9, 12.1, 13.1],
    ["South", 246235593, 524, 8.1, 8.3, 10.8],
    ["West", 362774577, 772, 9.4,9.9, 11.7]
    ]
}

Это последние три числа в каждой строке, которые являются процентными значениями, которые я использую для диапазонов диаграмм. Я хочу, чтобы ось x была отформатирована в формате integer +% на основе высоких и низких значений в данных.

Спасибо!

4b9b3361

Ответ 1

Обновление для D3 v4 (с использованием ES6):

// Can also be axisTop, axisRight, or axisBottom
d3.axisLeft()
    .tickFormat(d => d + "%")

Оригинальный ответ для D3 v3:

Вы можете создать свой собственный формат:

d3.svg.axis()
    .tickFormat(function(d) { return d + "%"; });

Если вы хотите избавиться от десятичных знаков:

d3.svg.axis()
    .tickFormat(function(d) { return parseInt(d, 10) + "%"; });