1

ハイチャートを使用して2つの一連のデータを表示しています。1つ目は一次データで、2つ目は初期データに基づいて計算された傾向線です。問題は、チャートタイプを変更するときに、トレンドラインを等しい系列としてカウントし、最初のトレンドラインと一緒に積み重ね/描画することです。

私は次のいずれかを試みています:

  • トレンドラインデータを破線タイプのままにし、プライマリデータチャートタイプのみを変更します-
    または-
  • トレンドラインをそのままにしておくことができない場合は、トレンドラインを削除/割引します。

私はここで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 に答える