2012-10-03 4 views
5

ハイチャートを使用して、そのIDを使用してポイントを選択するにはどうすればよいですか?私は、次のコードを使用してグラフを作成する場合たとえば、:ハイチャートを使用したIDによるポイントの選択

chart1 = new Highcharts.Chart({ 
     chart: { 
      renderTo: 'container', 
      type: 'scatter' 
     }, 
     title: { 
      text: 'Fruit Consumption' 
     }, 
     xAxis: { 
      categories: ['Apples', 'Bananas', 'Oranges'] 
     }, 
     yAxis: { 
      title: { 
       text: 'Fruit eaten' 
      } 
     }, 
     series: [{ 
      name: 'Jane', 
      data: [{ 
       name: 'Point1', 
       x: 1, 
       y: 2 
      }, { 
       name: 'Point2', 
       x: 2, 
       y: 5 
      }] 
     }, { 
      name: 'John', 
      data: [5, 7, 3] 
     }] 
     }); 
    }); 

ツールチップは、私がポイントにカーソルを合わせると、idは何であることを私に伝えます。しかし、その点を特定するための構文を理解することはできません。私は知っているchart1.series[0].nameJane. Also, chart1.series [0]。データ[0] .name returns point1`ポイントを選択し、 'point1'だけを知っている色を変えるのは簡単な方法はありますか?

私は、毎回すべてのポイントをループする以外に、より効率的な方法があるのだろうかと思います。

+0

は...常にタスクを実行する方法を学ぶための最善の方法であり、それは、代替と学習/トレーニングの効率的なソースです。 :) http://api.highcharts.com/highcharts –

+2

私はこの質問をほぼ2年前に聞いた。その時点ではドキュメンテーションで議論されていませんでした。 – djq

答えて

9

取得するポイントごとにidを設定できます。

series: [{ 
    name: 'Jane', 
    data: [{ 
     'name': 'Point1', 
     'id': 'point1', 
     'x': 1, 
     'y': 2 
    }, { 
     'name': 'Point2', 
     'id': 'point2', 
     'x': 2, 
     'y': 5 
    }] 
}, { 
    name: 'John', 
    data: [5, 7, 3] 
}] 

次に、次のコードでポイントを取得できます。

// assuming that chart is your chart var 
chart.get('point1'); 

demo

それとも、あなたがpoint nameで検索したいnameを比較することpoints thrue idすることができます単純なループを設定しない場合。

リファレンス:APIドキュメントを読む

+0

清潔でシンプルで効率的です。 –

+0

それは効率的ではありません。 CleanCharの "chart.get()"メソッドは、すべてのシリーズとそのシリーズ内のすべての点を繰り返して、一致するものを探します。とにかくすでにx値でソートされているデータセットのO(n)です。したがって、ハイチャートを使用してアプリケーション開発者が実行するバイナリ検索では、少なくともO(ログN)検索を行うことができるため、効率が向上します。 – Sensei

関連する問題