ChartJS根据Y轴

时间:2018-05-02 10:58:22

标签: javascript php arrays chart.js linechart

我正在尝试做同样的事情: ChartJS - Different color per data point

但在PHP中,我无法使用javascript选择器,例如那里接受的答案。

要构建我的图表,我在SQL请求中使用PHP会话var,因此有必要将代码与PHP集成。我有几个图表,我用Ajax加载了一个switch case。

我实现了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明确地改变了点的颜色,但它只是将颜色添加到第一个结果中!

像这样: chart

所以我想我只需要做一个有条件的循环,但我不知道如何继续。

1 个答案:

答案 0 :(得分:-2)

好的,我是在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");
                }
            }

感谢顺便说一下,伟大的社区。