How can I reset the styles given to series in Highcharts?

前端 未结 4 1133
执笔经年
执笔经年 2021-01-18 07:31

I am using Highcharts to render some graphs to my website. Sometimes, I need to remove all series from the chart and add some new series to the chart, because I requested so

相关标签:
4条回答
  • 2021-01-18 07:48

    Use the colors options:

    $('#container').highcharts({
        colors: ['#2f7ed8', 
            '#0d233a', 
            '#8bbc21'],
        series: …
    

    Live example: http://jsfiddle.net/juuQs/3/

    Or use a static color for each series, like this:

    chart.addSeries({
            data: [144.0, 176.0, 29.9, 71.5, 106.4, 129.2, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4],
            color: '#2f7ed8'
        });
    
    0 讨论(0)
  • 2021-01-18 07:54

    I found the solution in a pull request on GitHub (https://github.com/highslide-software/highcharts.com/pull/203).

    You just need to reset Highcharts color counter after deleting the series. There is also a counter for the symbols.

    UPDATE: From version 4.0.3 and above the name of the counters has changed:

    var chart = $('#container').highcharts();
    while(chart.series.length) {
        chart.series[0].remove();
    }
    
    chart.colorCounter = 0;
    chart.symbolCounter = 0;
    
    chart.addSeries({
         data: [144.0, 176.0, 29.9, 71.5, 106.4, 129.2, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4]
    });
    chart.addSeries({
        data: [129.2, 106.4, 135.6, 95.6, 54.4, 148.5, 144.0, 176.0, 29.9, 71.5, 216.4, 194.1]
    });
    chart.addSeries({
        data: [106.4, 129.2, 135.6, 148.5, 144.0, 176.0, 29.9, 71.5, 194.1, 95.6, 54.4, 216.4]
    });
    

    Live example: http://jsfiddle.net/juuQs/18/

    (Prior to version 4.0.3 you must use chart.counters.color = 0 and chart.counters.symbol = 0)

    0 讨论(0)
  • 2021-01-18 07:57

    You can use my custom solution which reset colors in each click event.

    http://jsfiddle.net/sbochan/gJvde/1/

     function setColors(chart){
        var series = chart.series,
                 colors = chart.options.colors,
                 len = series.length-1;
    
                    if(flag) {
                        $.each(series,function(i,serie){
                            if(i==len) {
                                flag != flag;
                                serie.update({
                                    color: colors[i]
                                },true,true);
                            }
                            else {
                                serie.update({
                                    color: colors[i]
                                },false);
                            }
                        });
                    }
    }
    
    0 讨论(0)
  • 2021-01-18 08:05

    try using addClass() method. suppose your container is some element X having id Y. put style information inside head as,

    <style>
          X.Y { /* any style info */};
    </style>
    

    then every time you are adding data to any element call addClass("Y") on that element.

    0 讨论(0)
提交回复
热议问题