2016-06-08 4 views
2

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

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

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

enter image description here

+2

Поскольку расстояние от 10 до 20 совпадает с расстоянием от 20 до 40, я собираюсь подвергнуть сомнению Log 2. – cdlane

+3

Поскольку log_n (a) = log (a)/log (n), база не имеет значения. – kennytm

ответ

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

Смежные вопросы