Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Highcharts中更改图表类型时修复/贴现数据系列_Javascript_Highcharts - Fatal编程技术网

Javascript 在Highcharts中更改图表类型时修复/贴现数据系列

Javascript 在Highcharts中更改图表类型时修复/贴现数据系列,javascript,highcharts,Javascript,Highcharts,我用它来显示两个系列的数据。第一个是原始数据,第二个是基于初始数据计算的趋势线。问题是,当改变图表类型时,它将趋势线计算为一个相等的系列,并将其与第一个系列一起叠加/绘制 我试图: 将趋势线数据保留为虚线类型,仅更改主数据图表类型 --或者-- 如果无法保持趋势线不变,则删除/贴现趋势线 我已经把确切的问题放在JSFIDLE上了 HTML下拉列表: <select id="chartType"> <option value="spline">Spline</

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

我试图:

  • 将趋势线数据保留为虚线类型,仅更改主数据图表类型
    --或者--
  • 如果无法保持趋势线不变,则删除/贴现趋势线
我已经把确切的问题放在JSFIDLE上了

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: [
  {
    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]
  }
]
我在函数中使用了
系列[0]
作为主要数据-因为它是第一个要加载的系列,但当我随机循环使用下拉选项时,它似乎几乎循环了系列-更改趋势线的图表类型。。。这几乎就像是更新的系列订单交换后改变类型

有什么想法/技巧/解决方案吗

系列数据:

<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: [
  {
    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]
  }
]

现在的情况是,您每次都在看系列[0]。但由于每次删除趋势线,然后添加新的趋势线,所以系列[0]每次都会发生变化

因此,您需要做的是增加一致性,如:

    for ( i = 0 ; i < series.length ; i++ ) {
        if ( series[i].name == 'Primary data' ) {
            serie = series[i];
        }                
    }            
    // serie = series[0];
for(i=0;i
发生的事情是,您每次都在看系列[0]。但由于每次删除趋势线,然后添加新的趋势线,所以系列[0]每次都会发生变化

因此,您需要做的是增加一致性,如:

    for ( i = 0 ; i < series.length ; i++ ) {
        if ( series[i].name == 'Primary data' ) {
            serie = series[i];
        }                
    }            
    // serie = series[0];
for(i=0;i
我知道它就在
addseries()
附近,但在我到达之前你就把它钉死了!谢谢。我知道它就在
addseries()
附近,但在我到那里之前你就搞定了!谢谢