【发布时间】:2015-03-03 15:47:22
【问题描述】:
假设您从0 to 1,000,000,000 获得值,并且您想要绘制 30 天。所以一个特定的图表可能有一组像:
[ 1, 465, 123, 9, ... ]
而另一个图表可以有一组更大的数字:
[ 761010, 418781, ... ]
是否有一种“最佳算法”可以将这些值分割成“干净”的数字?抱歉措辞,不知道正确的术语,我会尽力解释。
“最优算法”是指最小计算步骤数,因为它创建的标签(比如 y 轴)从人类的角度来看是最简单的。
例如,假设您总是想将 y 轴分成 5 个标签。你可以这样做:
var max = Math.max.apply(Math, values); // 465 (from the first set of values)
var interval = max / 5;
var labels = [ interval * 0, interval * 1, interval * 2, ... ];
但这会创建如下标签:
[ 0, 93, 186, ... ]
这对于人类来说是很复杂的。更好(但仍然不理想)是创建如下标签:
[ 0, 125, 250, 375, 500 ]
但这仍然是具体的。不知何故,它应该找出更好的分割是:
[ 0, 200, 400, 600, 800 ]
这样,它被分成更直观的块。
有解决这个问题的标准方法吗?哪种算法效果最好?
【问题讨论】:
标签: javascript algorithm plot charts aggregate-functions