2017-03-27 24 views
0

chart.jsでa line chartを作成しています。私のx軸は時間ベースで、月を表示します。
各「月の列」をクリック/選択可能にする必要がありますが、これを管理する方法が見つかりません。 getElementAtEvent()のようなメソッドはデータを返すので、どの月が選択されているかを知ることができます。しかし、ユーザーがポイントを右クリックするだけで、「列」内のどこかではクリックしないと機能しません。x軸の月をchart.jsの線グラフでクリック可能にする

どうすればいいですか?それとも既にこれのためのプラグインはありますか?

答えて

0

クリックしたスケール領域のスケール値を返す.getValueForPixel()と呼ばれる文書化されていない時間スケールのプロトタイプメソッドを使用して、この作業を行うことができました。

このメソッドは、目盛りラベルを生成するために使用されたモーメントオブジェクトを返します。したがって、この値を表示するときに、時間スケールに設定された同じ書式文字列を使用できます(視覚的に同じにしたい場合)。私はこれを一般的なonClick option config propertyと結びつけて、あなたがしたいことに対するかなり簡単なアプローチをしました。

ここでその方法を説明します。 optionsオブジェクトに、この関数を使用してonClickプロパティを追加します。

onClick: function(e) { 
    var xLabel = this.scales['x-axis-0'].getValueForPixel(e.x); 
    console.log(xLabel.format('MMM YYYY')); 
    alert("clicked x-axis area: " + xLabel.format('MMM YYYY')); 
}, 

ここにはcodepen exampleが掲載されています。

+0

残念ながら、これは意図したとおりに動作しません。私は[あなたのコードサンプルを更新しました](http://codepen.io/anon/pen/gmdxyO)、もっと短くして、実際の時間x軸を使用しました([瞬間](https://github.com /モーメント/モーメント))。ここでは2つの点しか存在しない。どこでもクリックすると、インデックス0または1が得られます。ただし、列をクリックしたときにデータを保持していなくても、月(形式はYYYY-MM)を取得したいと考えています。 – DoeTheFourth

+0

私は見て回ります。将来的には、特定のchart.js設定を投稿して質問を得るために使用することをお勧めします。あなたの答えでは、時間スケールを使用していたことは明確ではありませんでした。 – jordanwillis

+0

@DoeTheFourth時間スケールで動作するソリューションの答えを更新しました。 – jordanwillis

関連する問題