我有一个散点图,它根据用户输入过滤掉某些数据点。我正在使用d3.format
以下列方式将我的X轴值作为美元返回:
var costFormatter = d3.format('$' + 's');
xAxis = d3.svg.axis().orient('bottom').tickFormat(function(d) {
if (d === 0) { return 0; }
else if (d < 0) { return ''; }
else { return costFormatter(d); } // returns $1.5M, 800k, etc.
});
当我有大量的点时,这有效,但是当我在散点图上得到一个点时,我有10个滴答,返回像$8.3498668M
这样的数字。我希望该号码显示为$8.35M
。
注意:由于域和范围值是动态的,我无法使用 tickValues()
答案 0 :(得分:1)
不幸的是你不能在d3.format中混合使用类型g和类型s,所以你必须这样做...
function f(x){
return d3.format('$,s')(x.toPrecision(3));
}
我做了一些实验,而且s类型似乎包含g行为,所以它更容易......
d3.format('$,.3s')
将提供与上述功能相同的结果。