zoukankan      html  css  js  c++  java
  • Highcharts中更新series的5种方法

    用Highcharts画图时,经常需要更新所画的图表,最常见的就是改变数据以更新图表。在Highcarts中,数据对应的参数是series。这儿就以图1的柱状图为例,列举如何更新series的5种方法,以供参考。源代码可从这儿访问。

                                                                      图1

    1. series.update

    Highcarts图表中,可以有多个series。当我们想更新其中某一个series时,可以直接调用其update方法。效果如图2所示。
    chart.series[0].update({  
        data: [29.9, 71.5, 306.4, 429.2, 144.0, 176.0, 135.6, 248.5, 216.4, 194.1, 95.6, 54.4]  
    });  

                                                                                                                        图2

    2. chart.update

    如果想一次性更新多个series,那么就可以直接使用chart.update。除了series,其他参数也可以同时进行更新。要注意的是,chart.update只允许更新原来的series,不允许新增series。比如在这个例子里,只能更新原来的一个或两个series,哪怕多加series,也不会起作用。效果如图3所示。
    chart.update({  
        series: [{  
        type: 'column',  
        name: 's1',  
        data: [129.9, 171.5, 306.4, 429.2, 144.0, 176.0, 135.6, 248.5, 216.4, 194.1, 95.6, 54.4]  
        },{  
        type: 'column',  
        name: 's2',  
        data: [69.9, 51.5, 176.4, 121.2, 124.0, 476.0, 935.6, 248.5, 266.4, 191.1, 99.6, 53.4]  
        }]  
    }); 

                                                                                                                                    图3

     

    3. chart.addSeries

    如果想要新增series,就得使用chart.addSeries了。一次只能加一个series。注意这个方法有性能问题,当series的长度很长, 且一次性加好多series的时候,图表的反应会很慢。效果如图4所示。

    chart.addSeries({  
        type: 'column',  
        name: 's3',  
        data: [129.9, 171.5, 1106.4, 1129.2, 144.0, 176.0, 135.6, 1148.5, 216.4, 194.1, 95.6, 54.4]  
        }); 

                                                                                                                                             图4

    4. series.remove & chart.addSeries

    当我想完全替换原来的series,而不仅仅是在上面做更新和新增的时候,可以采用series.remove和chart.addSeries结合的方法。也就是说,要先去掉所有原来的series,再逐个加入新的。同样,这个方法有性能问题。效果如图5所示。

    seriesData = [{  
        type: 'column',  
        name: 's1 new',  
        data: [234.9, 171.5, 1106.4, 1129.2, 144.0, 176.0, 135.6, 1148.5, 216.4, 194.1, 195.6, 454.4]  
        }];  
    while (chart.series.length > 0) {  
      chart.series[0].remove(true);  
    }  
    for (var i = 0; i < seriesData.length; i++) {      
      chart.addSeries(seriesData[i]);  
    } 

                                                                                                                                           图5

    5. series.remove/chart.addSeries & chart.update

    第4种方法由于使用了chart.addSeries,导致性能上可能会出现问题。这儿就用一种替换的方法来实现同样的效果。关键就是要比较原来series的数目和新的series的数目,当两个数目不同时,通过series.remove或者chart.addSeries使其相等,再统一调用一次chart.update实现图表的更新。源代码如下。当新的series数目大于原来的时候,效果如图6所示。
    seriesData = [{  
            type: 'column',  
            name: 's1 new',  
            data: [234.9, 171.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 195.6, 454.4]  
            },{  
            type: 'column',  
            name: 's2 new',  
            data: [234.9, 171.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 195.6, 454.4]  
            },{  
            type: 'column',  
            name: 's3 new',  
            data: [234.9, 171.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 195.6, 454.4]  
            }];  
            
        var diff = chart.series.length - seriesData.length;  
        if(diff > 0){  
            for (var i = chart.series.length; i > seriesData.length; i--){  
            chart.series[i-1].remove(true);  
          }  
        } else if (diff < 0){  
            for (var i = chart.series.length; i < seriesData.length; i ++){  
            chart.addSeries({});  
          }  
        }  
                  
        chart.update({  
            series:seriesData  
        });  

                                                                                                                               图6

  • 相关阅读:
    arcgis for flex 学习笔记(一)
    也说JS脚本加载控制
    数据验证随想(续)
    Oracle 脚本记录
    探讨:如何更快的赋值取值
    正则表达式技巧
    类似web风格的 Winform 分页控件
    数据验证随想
    [leetcode]Excel Sheet Column Title
    [leetcode]Merge k Sorted Lists
  • 原文地址:https://www.cnblogs.com/yuwenjing0727/p/9172062.html
Copyright © 2011-2022 走看看