Как правильно преобразовать числа в точки ломаной линии - PullRequest
0 голосов
/ 20 сентября 2018

Мне нужно заполнить данные в полилинии, проблема в том, что мои данные, представляющие каждый набор данных, не должны быть выше 120.

Если у меня есть эти числа

5000 5320 54005100 4950 4850

Мне нужно вписать их в точки ломаной линии, которые должны составлять максимум 120 и минимум 0. Как это сделать, я подумал о различных способах сделать это, как показано ниже:

$total = "The Total Value Of All Datasets"
$row['value'] = "The Value Of The Current Dataset";

$point = ceil (($row['value'] / $total) * 1200); 

В приведенном выше примере будут отображаться очень близкие числа, которые не являются идеальными, поскольку мне нужно, чтобы наибольшее значение представляло 120, а низшее 0, а остальные - число между ними.

Статическая выборка SVG иПолилиния

    <svg viewBox="0 0 500 100" class="mktcap_spark">
    <polyline
        fill="none"
        stroke="#e9be3d"
        stroke-width="8"
        points="
        00,120
        20,60
        40,120
        60,10
        80,80
        100,80
        120,60
        140,100
        160,90
        180,80
        200, 110
        220, 10
        240, 70
        260, 100
        280, 100
        300, 40
        320, 0
        340, 100
        360, 100
        380, 120
        400, 60
        420, 70
        440, 80
        460, 20
        480, 50
        500, 30
        "
        />

    </svg>

Оказывает это

1 Ответ

0 голосов
/ 20 сентября 2018

Найдите минимальное и максимальное значение $xMin, $xMax, затем используйте линейное отображение

$newX = 120 * ($X - $xMin) / ($xMax - $xMin)
...