1

我正在使用highcharts来显示两个系列的数据。第一个是原始数据,第二个是基于初始数据计算得出的趋势线。问题是,当更改图表类型时,它会将趋势线计算为一个相等的序列,并将其与第一个序列一起堆叠/绘制。

我正在尝试:

  • 将趋势线数据保留为虚线类型并仅更改主要数据图表类型
    --或--
  • 如果无法保持原样,则删除/折扣趋势线。

我已经把确切的问题放在了 jsfiddle

HTML 下拉列表:

<select id="chartType">
  <option value="spline">Spline</option>
  <option value="line">Line</option>
  <option value="column">Column</option>
  <option value="area">Area</option>
</select>

我用来更改图表类型的函数:

 $('#chartType').change(function(){
        changeType(chart.series, this.value);
 });

   function changeType(series, newType) {

       serie = series[0];
       serie.chart.addSeries({
       type: newType,
       name: serie.name,
       color: serie.color,
       data: serie.options.data
       }, false);

       serie.remove();
   chart.redraw();
   }

series[0]在我的函数中用作主要数据 - 因为它是要加载的第一个系列,但是当我随机循环浏览下拉选项时,它似乎几乎循环了系列 - 改变了趋势线的图表类型。 ..这几乎就像更新后的系列订单在更改类型后互换!

任何想法/黑客/解决方案?

系列数据:

series: [
  {
    lineWidth: 6,
    name: 'Primary data',
    data: [59.359,60.395,68.830,70.290,73.259,81.344,60.113,60.113,80.644,110.929,96.731,78.104]
  },
  {
    lineWidth: 3,
    dashStyle: 'dash',
    name: 'Trend-line',
    color: '#999999',
    shadow: 0,
    data: [59.259,62.123,64.986,67.850,70.714,73.577,76.441,79.305,82.168,85.032,87.896,90.759]
  }
]
4

1 回答 1

1

发生的事情是您每次都在查看 series[0] 。但是因为您要删除一条趋势线,然后每次都添加一条新趋势线,所以 series[0] 每次都会更改。

所以你需要做的是增加一种一致性感,就像这样:

    for ( i = 0 ; i < series.length ; i++ ) {
        if ( series[i].name == 'Primary data' ) {
            serie = series[i];
        }                
    }            
    // serie = series[0];
于 2012-12-05T04:29:59.280 回答