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


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

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

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

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

1 2

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, чтобы соответствовать вашему приложению.