Intereting Posts
Paypal: неверная проблема с IPN Как получить значение из td через $ _POST Почему strtotime дает разные результаты в разных часовых поясах? как проверить, сколько видеопотока было просмотрено пользователем с помощью php Как правильно добавить параметр без ошибок в доктрине swagger zircote Активный токен доступа должен использоваться для запроса информации о текущем пользователе Разделение разделителя строк в PHP на пары ключей / значений (ассоциативный массив) PHP SQLSRV: работает ли sqlsrv_query (), чтобы подготовить оператор select, правильно? mysql fetch связывает массив mysql fetch Видео не загружается Неопределенная переменная: позиция PHP: формат широты и долготы с градусами, минутами и секундами codeigniter: почему это происходит, когда i echo base_url () в атрибуте href тега привязки, он повторяет два раза Шифровать исходный код PHP в Yii Поиск файла XML с использованием PHP

Получить значение цвета из числовых значений

Мне нужно, чтобы projet получал цвет от значения. Я объясняю, у меня есть данные, и каждая информация должна быть представлена ​​цветом.

Красный цвет для максимума, а синий для минимума и зеленый – для среднего значения. Это своего рода тепловая карта.

Итак, мне нужно, чтобы функция возвращала правильный цвет.

Я попробовал что-то вроде этого:

function datatocolor($min, $max, $value) { $half = (($min + $max) / 2); if ($value > $half) { $r = (255 * ($value+$min-$half)) / $half; $g = 255 - $r; $b = 0; } else { $b = (255 * ($half-$value+$min)) / $half; $g = 255 - $b; $r = 0; } $color = array(intval($r), intval($g), intval($b)); return $color; } 

Но я краснею и синюю, и никогда не зеленую … Я пробовал много операций, я должен быть глупым, но я не нашел правильной операции … Спасибо заранее за вашу помощь!

Я не эксперт по php, но насколько я могу судить, проблема не в этом блоке кода. Я проверял ваш алгоритм в java, чтобы быть уверенным, и это выглядит правильно:

 public static void main(String[] args) { int min = 0; int max = 10; int half = (min + max) / 2; int r, g, b; // Cycling through the values for completeness' sake. for (int value = 0; value <= 10; value++) { if (value > half) { r = (255 * (value + min - half)) / half; g = 255 - r; b = 0; } else { b = (255 * (half - value + min)) / half; g = 255 - b; r = 0; } System.out.println("Value: " + value + " - " + new Color(r, g, b)); } 

Результатом этого является то, что вы ожидаете – чистый синий минимум, чистый зеленый в середине и чистый красный максимум:

 Value: 0 - java.awt.Color[r=0,g=0,b=255] Value: 1 - java.awt.Color[r=0,g=51,b=204] Value: 2 - java.awt.Color[r=0,g=102,b=153] Value: 3 - java.awt.Color[r=0,g=153,b=102] Value: 4 - java.awt.Color[r=0,g=204,b=51] Value: 5 - java.awt.Color[r=0,g=255,b=0] Value: 6 - java.awt.Color[r=51,g=204,b=0] Value: 7 - java.awt.Color[r=102,g=153,b=0] Value: 8 - java.awt.Color[r=153,g=102,b=0] Value: 9 - java.awt.Color[r=204,g=51,b=0] Value: 10 - java.awt.Color[r=255,g=0,b=0] 

Основываясь на том, что вы предоставили, проблема кажется либо в том, как вы вызываете функцию, либо в том, как вы используете возвращаемый массив.