如何在y轴上显示数据为KB,MB,GB,TB

Dan*_*nia 4 javascript charts data-visualization d3.js

我正在绘制一个在服务器上显示流量的图表.我想在y轴上显示单位为KB,MB等.有什么意见我怎么能通过d3轴刻度来做到这一点.

mus*_*_ut 8

您可以使用以下d3.tickFormat功能执行此操作:演示.

var bytesToString = function (bytes) {
    // One way to write it, not the prettiest way to write it.

    var fmt = d3.format('.0f');
    if (bytes < 1024) {
        return fmt(bytes) + 'B';
    } else if (bytes < 1024 * 1024) {
        return fmt(bytes / 1024) + 'kB';
    } else if (bytes < 1024 * 1024 * 1024) {
        return fmt(bytes / 1024 / 1024) + 'MB';
    } else {
        return fmt(bytes / 1024 / 1024 / 1024) + 'GB';
    }
}

var xScale = d3.scale.log()
               .domain([1, Math.pow(2, 40)])
               .range([0, 480]);

var xAxis = d3.svg.axis()
                .scale(xScale)
                .orient('left')
                .tickFormat(bytesToString)
                .tickValues(d3.range(11).map(
                    function (x) { return Math.pow(2, 4 * x); }
                ));
Run Code Online (Sandbox Code Playgroud)

不过,您也可以使用自己的值tickValues.