【发布时间】:2018-04-21 16:38:26
【问题描述】:
我想为一系列事件计算一行的长度。
我正在使用以下代码进行此操作。
var maxLineLength = 20;
var lineLen = function(x, max) {
return maxLineLength * (x / max);
}
var events = [0.1, 1, 5, 20, 50];
var max = Math.max.apply(null, events);
events.map(function (x) {
console.log(lineLen(x, max));
});
这可行,但我使用线性缩放,而我想使用对数,因为我不希望小事件在大事件出现时变得太小。
我修改了 lineLen 函数,如下所示,但是 - 显然 - 它不适用于等于 1 的事件,因为 1 的日志为零。我想显示事件等于一(适当地缩放)而不是使它们变为零。我还需要正数来保持正数(0.1 变成负数)
我应该如何修改 lineLen 以使用对数刻度?
var maxLineLength = 20;
var lineLen = function(x, max) {
return maxLineLength * (Math.log(x) / Math.log(max));
}
var events = [0.1, 1, 5, 20, 50];
var max = Math.max.apply(null, events);
events.map(function (x) {
console.log(lineLen(x, max));
});
【问题讨论】:
-
这是您唯一需要的应急措施吗?如果等于 1,则保留为 1?
-
我只需要这个,但也应该缩放一个
-
我想澄清一下,我不想留下一个...一个,但我也想扩展它
标签: javascript logarithm