mustafaalkan64
mustafaalkan64

Reputation: 207

How to Change Highchart Column Color Dynamicly

I want to set color of highchart column according to average or limit value. For example, limit value is %20, columns value that over %20 will have red color, or under 20% will have green color.

Chart displays:

enter image description here

enter image description here

Scripts:

function GetEnduktiveKapasitiveValues(type) {

$.ajax({
    url: app_base_url + "Reactive/_ReaktiveDaily",
    type: 'POST',
    data: { branchId: 9, dateMonth: 3, type: type },
    success: function (result) {
        var list = [];
        $.each(result.DateList, function (i, val) {
            var value = new Date(parseInt(val.substr(6)));
            var month = value.getMonth() + 1;
            var ret = value.getDate() + "." + month + "." + value.getFullYear();
            list[i] = ret;
        });
        $('#container').highcharts({
            chart: {
                type: 'column'
            },
            title: {
                text: 'Günlük Endüktif - Kapasitif Ceza Limiti Değerleri'
            },
            subtitle: {
                text: ''
            },
            xAxis: {
                categories: list
            },
            yAxis: {
                min: 0,
                title: {
                    text: 'Oran (%)'
                }
            },

            tooltip: {
                headerFormat: '<span style="font-size:10px">{point.key}</span><table>',
                pointFormat: '<tr><td style="color:{series.color};padding:0">{series.name}: </td>' +
                    '<td style="padding:0"><b>{point.y:.1f} mm</b></td></tr>',
                footerFormat: '</table>',
                shared: true,
                useHTML: true
            },
            credits: {
                enabled: false
            },
            plotOptions: {
                column: {
                    pointPadding: 0.2,
                    borderWidth: 0,
                    borderRadius: 20
                },
                color : ['#333', '#CB2326', '#DDDF00', '#24CBE5', '#64E572', '#FF9655', '#CB2326',      '#6AF9C4']
            },
            series: [{
                name: result.Name,
                data: result.RateList,
                type: 'column'

            }, {
                name: 'Ceza Limiti',
                type: 'line',
                data: result.Average,
                marker: {
                    lineWidth: 2,
                    lineColor: Highcharts.getOptions().colors[3],
                    fillColor: 'white'
                }
            }]
        });
    },
    error: function (result) { }
});
}

I want to get like this result: enter image description here

Upvotes: 2

Views: 1498

Answers (2)

Sami
Sami

Reputation: 4006

  • Make a temp series object.
  • Then loop through you data and assign data.color based on your value and push it to series data object.
  • After the loop finishes push the temp series object to the hightchart options series.

JSFIDDLE

Example is a simple demo. You will need to adapt it to your need.

Upvotes: 4

SteveP
SteveP

Reputation: 19093

You can do this by specifying the colour in your data. e.g. from the highcharts examples:

data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, {
            y: 216.4,
            color: '#BF0B23'
        }, 194.1, 95.6, 54.4]

http://jsfiddle.net/gh/get/jquery/1.7.2/highslide-software/highcharts.com/tree/master/samples/highcharts/point/color/

http://api.highcharts.com/highcharts#series.data.color

Upvotes: 3

Related Questions