ChartJS устанавливает цвет точек линейного графика в зависимости от оси Y

Я пытаюсь сделать то же самое, что и здесь: ChartJS - разные цвета для каждой точки данных

Но в PHP я не могу использовать селекторы javascript, такие как принятые там ответы.

Для построения диаграмм я использую переменную сессий PHP в запросе SQL, поэтому необходимо интегрировать код с PHP. У меня есть несколько диаграмм, которые я загружаю с помощью Ajax с переключателем.

Я инстанцирую значение параметров Chartjs следующим образом:

$html .= "<p>Results from " . $_SESSION['statDateFrom'] . " to " . $_SESSION['statDateTo'] . "</p>";
    $html .= "<canvas id='myChart' width='400' height='300'>";
    $html .= "</canvas>";
    $html .= $legend;
    $html .= "<script>";
    $html .= "var ctx=document.getElementById('myChart').getContext('2d');";
    $html .= "var myChart = new Chart(ctx, {";
    $html .= "type:'". $type . "',";
    $html .= "data:" . $mydata . ",";
    $html .= "options: " . $options;
    $html .= "});";
    $html .= "</script>";

И диаграмма, которую я хочу настроить здесь, представляет собой линейную диаграмму, на которой я держу только точку. Я хочу раскрасить точку разными цветами в зависимости от значения оси Y

На данный момент я пробовал это:

$arrDatasets = array(
                array('label' => "event_name",
                      'fill' => false,
                      'showLine' => false,
                      'pointBackgroundColor' => array("#82f827", "#ff4040", "#31698A", "#6666FF","#ff7F50","#fe6b60","#6c1ba1","#97bdd6"),
                      'data' => $datasetR1
                      ));
            $arrReturn = (array('labels' => $labels, 
                    'datasets' => $arrDatasets));
            $mydata = json_encode(($arrReturn));

Передача массива в pointBackgroundColor окончательно изменяет цвета точек, но добавляет цвета только к первым результатам!

Как это : ChartJS устанавливает цвет точек линейного графика в зависимости от оси Y

Итак, я думаю, мне просто нужно выполнить цикл с условиями, но я не знаю, как действовать дальше.

Поэтому перед генерацией $arrDatasets подготовьте массив, который будет иметь значение цвета для всей вашей точки. затем поместите ссылку в pointBackgroundColor

sandyJoshi 02.05.2018 13:27

выполните цикл через $datasetR1 и подготовьте '$ colorsArray', а при определении $arrDatasets используйте $colorsArray.

sandyJoshi 02.05.2018 13:30

Я поместил массив цветов в переменную, но как мне пройти через набор данных $ и определить цвета, связанные со значением?

rn605435 02.05.2018 14:25
foreach ($arrDatasets as $item) { // Get value from $item and push to $colorsArray }
sandyJoshi 02.05.2018 15:19

Возможный дубликат Chartjs - Цикл через набор данных и назначение цветов

sandyJoshi 03.05.2018 07:07
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
5
741
1

Ответы 1

Хорошо, я сделал это с помощью sandyJoshi.

это код:

foreach($datasetR1 as $value){
                if ($value == 1){
                    array_push($intColors, "#82f827");
                }
                elseif ($value == 2){
                    array_push($intColors, "#ff4040");
                }
                elseif ($value == 3){
                    array_push($intColors, "#31698A");
                }
                elseif ($value == 4){
                    array_push($intColors, "#6666FF");
                }
                elseif ($value == 5){
                    array_push($intColors, "#ff7F50");
                }
                elseif ($value == 6){
                    array_push($intColors, "#fe6b60");
                }
                elseif ($value == 7){
                    array_push($intColors, "#6c1ba1");
                }
                elseif ($value == 8){
                    array_push($intColors, "#97bdd6");
                }
            }

Кстати, спасибо за голосование против, отличное сообщество.

Другие вопросы по теме