我有一个图表,显示人口中名称的频率随着时间的推移,用户选择的时间只有一个名称。例如,约翰",最大值是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"所附?