シンプルに視覚化
Highchartsは、開発者があらゆるWebおよびモバイルプラットフォームにチャートを簡単に追加できるようにします。
Javascript、Angular、React、VueJS、iOS、R、.NET、Python、その他に対応しています。
株式カレンダー
このチュートリアルでは、カレンダーと株価表示が統合されたエリア株式チャートの株式カレンダーデモを作成します。結果は以下のデモで示されています。
株式カレンダーのデモを作成する方法を見てみましょう。
このデモでは、カレンダーを管理するために jQuery Datepickerを使用します。 これは、使用準備ができており、ページが読み込まれた直後に自動的に開くことができます。 一方、ブラウザのデフォルトピッカーは、ユーザーの操作が必要です。もちろん、他の日付ピッカーを使用することもできます。
株価表示は単なるHTML出力エリアです。DatepickerとHTML出力エリアは、チャートのコンテナの外側に表示されます。
データ配列に格納されたランダムデータセットを表示するために、エリアシリーズタイプを使用します。 デフォルトでは、このシリーズはチャート上で1つのyデータのみを表示します。 すべての始値、高値、安値、終値を表示したいと思っています。 これらをマッピングするには、series.keys プロパティを使用します:
keys: ['x', 'custom.open', 'custom.high', 'custom.low', 'y']
.
これで、ポイントから直接すべての値にアクセスできるようになりました:
openCell.innerText = point.custom.open.toFixed(2) + '$'; highCell.innerText = point.custom.high.toFixed(2) + '$'; lowCell.innerText = point.custom.low.toFixed(2) + '$'; closeCell.innerText = point.y.toFixed(2) + '$';
株価表示にカーソルを合わせるとすべてのポイント値が表示されるように、mouseOverイベントを使用します。 さらに、Datepickerでホバーされた日付をハイライト表示し、エリアチャートに赤いプロットラインをレンダリングします。
const showDataInfo = (chart, point, date) => { const plotLinesAndBands = chart.xAxis[0].plotLinesAndBands; if (plotLinesAndBands && plotLinesAndBands.length) { plotLinesAndBands[0].destroy(); } chart.xAxis[0].addPlotLine({ value: date, color: 'red', lineWidth: 3 }); openCell.innerText = point.custom.open.toFixed(2) + '$'; highCell.innerText = point.custom.high.toFixed(2) + '$'; lowCell.innerText = point.custom.low.toFixed(2) + '$'; closeCell.innerText = point.y.toFixed(2) + '$'; };
注意
それぞれプロットラインをremove(削除)およびCreate(作成)するためにdestroyおよびadd APを使用します。
次に、jQuery Datepickerのロジックを追加します。特定の日付をクリックすると、対応するx値を持つポイントが見つかり、グラフの中央に配置され、上記で説明したすべての情報が表示されます。
$('#date-picker').datepicker({ beforeShowDay: $.datepicker.noWeekends, // 最初に利用可能な日付 minDate: -Math.ceil(lastX - firstX) / DAY - 1, maxDate: -1 // today }); $.datepicker.setDefaults({ // 日付ピッカーの日付形式を設定 dateFormat: 'yy-mm-dd', onSelect: function(dateText) { const clickedDateStr = dateText.split('-'), clickedDate = Date.UTC(clickedDateStr[0], clickedDateStr[1] - 1, clickedDateStr[2]); // チャート上に 20 個のポイントを表示 chart.xAxis[0].setExtremes( clickedDate - DAY * 10, clickedDate + DAY * 10 ); const points = chart.series[0].points; let point; for (let i in points) { if (dateFormat('%Y-%m-%d', points[i].x) === dateText) { point = points[i]; break; } } if (point) { showDataInfo(chart, point, clickedDate); } } });
注意
setExtremes APIを使用して、レンダリング後に軸の最小値と最大値を設定します。
これで完了です!日付ピッカーと株価表示を備えた実用的なエリアストックチャートの作成方法は以上です。