【发布时间】:2017-10-05 21:53:39
【问题描述】:
我有一个跟踪文件大小的图表。我想设置一个显示文件大小的轴 (Y),并带有适当的 Mebibyte 后缀,例如:KiB、MiB、GiB 等。
现在,我以字节为单位输入数据,所以理论上一个简单的.tickFormat() 方法后跟d3.format() 应该可以解决问题。不幸的是,情况并非如此,因为文件大小实际上是 1024(或 2^20)的倍数,而不是典型的 SI 10^6。这意味着我的线开始绘制但轴很奇怪。
以 587108352 的文件大小为例,如果将其四舍五入到最接近的 MB,我得到 560MiB(使用 1024 (2^20) 乘数)。
如何设置我的轴以使用它?
我试过这个:
yAxis = d3.axisLeft(y)
.tickFormat(function (d) {
return d3.format(scope.formatOptions.specifier)(d * scope.formatOptions.multiplier) + scope.formatOptions.suffix;
});
格式选项对象在哪里:
vm.FormatObjectSize = {
specifier: ".0s", // decimal notation with an SI prefix, rounded to significant digits.
multiplier: 1, // none
suffix: "b" // bytes
};
这不太好用:
【问题讨论】:
-
Sugar.js 库有一种方法可以为您将数字概括为字符串:sugarjs.com/docs/#/Number/bytes
标签: javascript d3.js