d3可以智能地选择合适的数字格式吗?

时间:2016-05-01 18:46:27

标签: javascript d3.js format axis scientific-notation

我有一个图表,显示人口中名称的频率随着时间的推移,用户选择的时间只有一个名称。例如,约翰",最大值是0.08(占所有名称的8%),因​​此在y轴上显示百分比没有问题。对于名字"史蒂文斯,"同时,峰值为0.000014984。

如果我可以避免,我不想留下60px的左边距,所以我更喜欢这些小数字是科学记数法。

现在我有一个hacky解决方案:

y.tickFormat(function(d) {
    if (d == 0) {
        return 0;
    }
    if (d > 0.001) { // arbitrary cutoff
        return d3.format(",.1%")(d);
    }
    return d3.format(".2e")(d * 100) + "%";
});

是否有一种更简洁的方法可以做到这一点,例如1-99的数字不会得到" e0"所附?

0 个答案:

没有答案