Набор чисел, равномерно распределенных между минимумом и максимумом в логарифмическом масштабе

1

У меня есть график на шкале журнала с минимальным и макс. Мне нужно указать тики на этой шкале. Я хотел бы указать 5 тиков. Однако проблема заключается в том, что я бы хотел, чтобы тики были равномерно распределены. Сначала наивно, я пробовал:

while (tickValue <= upperTickValue) {
   tickValues.push(
       this.formatNumber.toView(tickValue, 3)
   );
   tickValue = tickValue + interval;
}

Однако это не приводит к равномерному размещению тиков по логарифмической шкале (duh).

Мне нужно иметь набор чисел, которые равномерно распределены по шкале журнала. Так, например, если бы я составлял график от 0,01 до 100, правильным ответом было бы:

[0.01, 0.1, 1, 10, 100]

Заранее спасибо.

  • 0
    у вас есть цифры в качестве данных и желаемый результат?
  • 0
    @NinaScholz Я обновил свой ОП
Теги:
math

1 ответ

1
Лучший ответ

Вы можете взять n-й корень из заданных значений для масштаба. Возьмите min и max значение для предотвращения ошибок с плавающей запятой.

function parts(min, max, scale) {
    var f = Math.pow(max / min, 1 / --scale),
        result = [min];

    while (--scale) {
        result.push(result[result.length - 1] * f);

    }
    result.push(max);
    return result;
}

console.log(parts(0.01, 100, 5));
console.log(parts(4, 5, 5));
.as-console-wrapper { max-height: 100% !important; top: 0; }

Ещё вопросы

Сообщество Overcoder
Наверх
Меню