web-dev-qa-db-ja.com

ハイチャート=>折れ線グラフをクリックしたときにポイントのIDを取得する

折れ線グラフを作成しています。線のポイントをクリックすると、このポイントに関するデータを含むポップアップを表示したいと思います。私が解決しようとしている問題は、ID、このポイントに関連付けられているシリーズ、またはそのようなものを取得することです。

これが私のコードです:

plotOptions: {
      column: {
        pointWidth: 20
      },

      series: {
        cursor: 'pointer',
        events: {
          click: function(event) {
            requestData(event.point);
          }
        }
      }

私は試した

requestData(this.point)

requestData(this.point.id)

また、それは動作しません。

ポイントのIDを取得するにはどうすればよいですか?

どうもありがとう。

17
Johann

ドキュメントによると、event.pointはグラフ上の最も近いポイントへのポインタを保持します

そこで、コンソールにevent.pointを書き込んで、何が利用できるかを確認します。

console.log(event.point);

ドキュメントから:

クリック:シリーズがクリックされたときに発生します。 thisキーワードは、シリーズオブジェクト自体を参照します。 1つのパラメーター、eventが関数に渡されます。これには、Highchartsのベースとして使用されているライブラリに応じて、jQueryまたはMooToolsに基づく一般的なイベント情報が含まれています。さらに、event.pointは、グラフ上の最も近いポイントへのポインターを保持します。

ドキュメントの例に基づく例:http://jsfiddle.net/5nTYd/

ポイントをクリックして、コンソールを確認します。

16
user113716

これを行うには、3つのオブジェクトを系列データ配列に渡し、クリックしてオブジェクトのconfig属性から引き出します。

したがって、シリーズデータは次のように作成できます。

 series: [{
  name: 'Example',
  yAxis: 0,
  type: 'spline',
  data: [[1294099200000,220.0,37],[1296432000000,190.0,40],[1297036800000,184.4,5]]
}]

上記のデータ属性では、1番目の要素は日付(x)、2番目の要素は別のデータポイント(y)、3番目はそのデータオブジェクトを表すオブジェクトのIDです。この「z」はグラフには表示されませんが、構成配列の3番目の要素として表示されます。例:plotOptionsポイント属性を使用してクリックをキャプチャすると、オブジェクトのIDはthis.config [2]としてアラートに含まれます。

  plotOptions: {
    series: {
      cursor: 'pointer',
      point: {events: {click: function() {console.log(this); alert('Category: '+ this.category +', value: '+ this.y + 'Series: ' +  this.series.name + ' ID: ' + this.config[2])}}}
     }
   },
11
user719754
 plotOptions: {
   series: {
     cursor: 'pointer',
     point: {
       events: {
         click: function() {
           console.log(this); 
           alert('Category: '+ this.category +', value: '+ this.y + 'Series: ' +  this.series.name + ' ID: ' + this.config[2])
         }
       }
     }
   }
 },
0
Sundaresan

検索でこの古い投稿を見つけました==>ハイチャートの「トレンドライン」[例: "line-time-series"]チャート[描画された線自体の任意の場所をクリックすると、ポイントにマーカーを追加します]。さて、あまり多くのコードを表示せずに、

  cursor: 'pointer',
                    point: {
                      events: {
                             click: function(e) {
                                alert("X("+this.x+"),Y("+this.y+")");
                                }//click
                          }//events
                           }//point

詳細をご希望の場合は、喜んでご提供いたします。

0
dcparham

私は同じ問題を抱えていました...私が正しく理解していれば。私の解決策はこれです、シリーズのIDを取得するために...それが役立つかどうかを確認してください...

plotOptions{
 series:{
  cursor: 'pointer',
    events: {
      click: function(event) {
        console.log(event.point.series.userOptions.id);
      }
    }
  }
0
Tilens