Highchart изменить цвет одного бара в одной категории

У меня есть столбец диаграммы графа и хочу определить цвет одной линии бара. Если вы видите второй набор на картинке. в зависимости от определенного условия я хотел бы изменить его на другой цвет. $schedule[] = array($date_from, ( date('Y-m-d',strtotime($model['ProjectEndDate'])) > date('Y-m-d') )? $today*1000 : $date_to); если конец не больше, чем сегодня, то измените цвет на красный.

Как бы я это сделал?

ввиду

$('#container').highcharts({
    'chart':{
        'type':'columnrange',
        'inverted':true,
            },
    'exporting':{
        'enabled':true
        },

    'title':{
        'text':'Projects incomplete in 2013'
        },
    'xAxis':{
        'categories':<?=$cat?>
        },
    'yAxis':{
        'title':'Date',
        'type':'datetime',
        'dateTimeLabelFormats':{                
            'month':'%b'
        },
        'min':Date.UTC(2013,00,01)
    },

    'tooltip':{
        formatter: function(){  
                return '<b>' +this.series.name + ':</b> '+ Highcharts.dateFormat('%e %b, %Y', this.point.low) + ' - ' +  Highcharts.dateFormat('%e %b, %Y', this.point.high) +'<br/>' ;
              }  
        },
    'legend':{
        'enabled':false
        },
    'series':[
                {
                    'name':'Start - End',
                    'data':<?=$data?>
                    },
                    {
                    'name':'Forecast',
                    'data':<?=$schedule?>,
                    'color': 'green'    
                    },
                    {
                    'name':'Actual',
                    'data':<?=$complete?>,
                    'color': 'yellow'   
                    }
                ]

});

У меня в контроллере есть

public function actionGraph(){      

        $command = Yii::app()->db->createCommand("
                SELECT
                    view_webprojectreport.PROJECT,
                    view_webprojectreport.StartDATE,
                    view_webprojectreport.ProjectEndDate,
                    view_webprojectreport.PERCENT,
                    view_webprojectreport.ASAAREA
                FROM
                    view_webprojectreport
                WHERE
                view_webprojectreport.StartDATE >= '2013' AND
                view_webprojectreport.ProjectEndDate IS NOT NULL AND
                view_webprojectreport.PERCENT < 100
                ORDER BY
                view_webprojectreport.PERCENT DESC
                ")->queryAll();

        $series = array();
        $cat = array();
        $totalLength = array();
        $schedule = array();
        $complete = array();

        foreach ($command as $key => $model) {
            $cat[] = $model['PROJECT'];
            $date_from = (strtotime($model['StartDATE']) + 1*86400)*1000;
            $date_to = (strtotime($model['ProjectEndDate']) + 1*86400)*1000;            
            $totalLength[] = array($date_from,$date_to);            

            $today = time();
            $startdate = strtotime($model['StartDATE']); 
            $enddate = strtotime($model['ProjectEndDate']); 
            $diff_total = $enddate - $startdate;
            $diff_today = $today - $startdate;
            $percentage_date=round(($diff_today/$diff_total)*100,2);


            $duration = ( ((strtotime($model['ProjectEndDate']) + 1*86400)*1000) - ((strtotime($model['StartDATE']) + 1*86400)*1000) );         
            $burn = ((time() )*1000) - ((strtotime($model['StartDATE']) + 1*86400)*1000);
            $pBurned = $burn/$duration;
            $time = $time = strtotime( ($date_from + $pBurned) );

            //echo date('Y-m-d') . " : " . date('Y-m-d',strtotime($model['ProjectEndDate'])) . "<br>";
            // place check for calculating if project end date is in past
            $schedule[] = array($date_from, ( date('Y-m-d',strtotime($model['ProjectEndDate'])) > date('Y-m-d') )? $today*1000 : $date_to); 




            $percentage_to_get = round((float)$model['PERCENT'],2);
            $percentage_of_days =  ((int)$model['PERCENT'] == 0)? 0 : floor($diff_total/100*$percentage_to_get);
            //echo date('Y-m-d', $startdate) . " : " . date('Y-m-d', $startdate + $percentage_of_days ) . "<br>";
            //echo $startdate . " : " . ($startdate + $percentage_of_days) . "<br>";
            $percentComplete = (($startdate + $percentage_of_days)+ 1*86400)*1000;  

            $complete[] = array($date_from,$percentComplete);

        }


        $series = array("series"=>array(
                array(
                    'name'=>'Start - End',
                    'data'=>$totalLength
                    ),
                array(
                    'name'=>'Forecast',
                    'data'=>$schedule,
                    'color'=> 'green'   
                    ),
                array(
                    'name'=>'Actual',
                    'data'=>$complete,
                    'color'=> 'yellow'  
                    )
                ));

        print_r($series);
        $this->render('graph',array(                
                'cat'=>json_encode($cat),
                "data"=>json_encode($totalLength),
                "schedule"=>json_encode($schedule),
                "complete"=>json_encode($complete),
                "series"=>json_encode($series)
        ));
    }

вывод графика

[[1357689600000,1372064004000],[1360972800000,1.3686588e+12],[1359158400000,1372064004000],[1.3630464e+12,1365721200000],[1359417600000,1372064004000],[1.3709916e+12,1372064004000],[1.3686588e+12,1372064004000],[1.3681404e+12,1372064004000],[1.3699548e+12,1372064004000],[1366930800000,1372064004000]]

Как бы я включил цвет в это?

$schedule[] = array($date_from, ( date('Y-m-d',strtotime($model['ProjectEndDate'])) > date('Y-m-d') )? $today*1000 : $date_to);

Я нашел http://jsfiddle.net/Q2JMF/2/ и пытаюсь реализовать, но не работает. график ничего не отображает

Мой пример на jsfiddle http://jsfiddle.net/shorif2000/z4HXX/2/

1 ответ

Решение

Ваша точка должна быть такой как:

{
   y:10,
   color: 'red'
}

Таким образом, данные должны выглядеть так:

data:[{
   y:10,
   color: 'red'
},4,5,6,7,7]

Как правильно составить состав:

http://php.net/manual/en/function.json-encode.php

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