Вычислять значения в логарифмическом масштабе

Я хочу перерисовать этот масштаб Body Weight в растровом редакторе попиксельно. Как я понял это логарифмическая шкала, а какой логарифм - двоичный или десятичный?

Как рассчитать расстояние между линиями в пикселях. Может быть, лучше считать от 1 до 70, а не наоборот.

values = []
for kilos, value in enumerate(range(1, 71)):
    //  some logic
    values.append([kilos, pixels])
reverse(values)

введите здесь описание изображения


person khex    schedule 08.06.2016    source источник
comment
Поскольку расстояние от 10 до 20 такое же, как и расстояние от 20 до 40, я рискну предположить, что такое логарифм 2.   -  person cdlane    schedule 08.06.2016
comment
Поскольку log_n(a) = log(a)/log(n), основание не имеет значения.   -  person kennytm    schedule 08.06.2016


Ответы (1)


Предполагая, что вам нужна высота в пикселях 500, вы можете использовать это, чтобы получить интервалы:

import math
pixels = 500
offset = math.log(10)
for x in range(10, 71, 10):
    print x, int(pixels * (math.log(x) - offset) / (math.log(70) - offset))

Это результат:

10 0
20 178
30 282
40 356
50 413
60 460
70 500

Количество пикселей — это просто разница между началом и концом каждого интервала. Измените 500, чтобы соответствовать вашему приложению.

person David Cullen    schedule 08.06.2016