我正在使用d3.js显示有关网络流量的信息,效果很好。在可视化中的某个点,y轴用于显示字节数。
我目前正在使用d3.svg.axis()。ticks()系统,这会产生很好的整数,如20000.当转换为kB / MB /等时,结果是像19.5和9.8这样的笨拙数字。有没有办法让刻度回到(2 ^(10 * c))的倍数,如1024,1048576等,而不是(10 ^ c)的倍数?
其他信息/想法:
答案 0 :(得分:2)
您可以手动处理刻度值,如下所示:https://github.com/mbostock/d3/wiki/SVG-Axes#wiki-tickValues
var xAxis = d3.svg.axis()
.scale(x)
.tickValues([1, 2, 3, 5, 8, 13, 21]);
您可以使用tickFormat来帮助进行格式化,即修复精度和SI前缀。 https://github.com/mbostock/d3/wiki/Formatting#wiki-d3_format
答案 1 :(得分:1)
一种解决方法是以不正确的方式使用千克和兆的标签,除以1000而不是1024来实现最终结果。
Instead of:
20000 B / 1024 = 19.5 kB :(
Stretch the truth with:
20000 B / 1000 = 20 kB :)
这似乎是不可接受的,因为它会故意引入错误,但如果我能说服自己“只有几个像素”,我可能会为了不对d3本身进行手术而采取行动。< / p>
我确信有更好的方法。