Lightweight Charts
TradingView Lightweight Charts™ — performant financial charts built with HTML5 canvas
Lightweight Charts は、TradingView が公開する HTML5 Canvas ベースの金融チャート用ライブラリ。バンドルサイズを抑えつつインタラクティブなローソク・ライン・ヒストグラムなどを描画し、静的画像の置き換えやダッシュボード向けに使われる。リポジトリ内 package.json の説明は「Performant financial charts built with HTML5 canvas」。
公式ドキュメント・デモは GitHub Pages。プラグイン例は plugin-examples を参照。
実装の中心は src/。公開 API は src/index.ts から再エクスポートされ、createChart / 各種シリーズ定数、ウォーターマーク・マーカー等のプラグイン、version() がエントリとしてまとまる。
src/api/— チャート生成(create-chartなど)とホスト向け API。src/model/— 時系列・価格スケール・シリーズ状態などドメインモデル。src/renderers/— Canvas 上への描画ロジック。src/views//src/gui/— ビューと操作系(クロスヘア等)。src/plugins/— テキスト/画像ウォーターマーク、シリーズマーカー等。
最小の利用フロー(概念)は次のとおり。
src/index.ts では、用途別に createYieldCurveChart・createOptionsChart などもエクスポートされている(イールドカーブ・オプション向けチャート)。
README では npm install lightweight-charts のあと、名前付きインポートで createChart とシリーズ型(例: LineSeries)を取り、addSeries → setData と続ける。
import { createChart, LineSeries } from 'lightweight-charts';
const chart = createChart(document.body, { width: 400, height: 300 });
const lineSeries = chart.addSeries(LineSeries);
lineSeries.setData([
{ time: '2019-04-11', value: 80.01 },
{ time: '2019-04-12', value: 96.63 },
]);
unpkg 等のスタンドアロン JS は window.LightweightCharts を生成する。README の例では LightweightCharts.createChart と LightweightCharts.LineSeries を使用。
const chart = LightweightCharts.createChart(document.body, { width: 400, height: 300 });
const lineSeries = chart.addSeries(LightweightCharts.LineSeries);
lineSeries.setData([/* ... */]);
src/index.ts からエクスポートされるシリーズには、LineSeries、BaselineSeries、AreaSeries、BarSeries、CandlestickSeries、HistogramSeries などがある。カスタムシリーズ向け型(ICustomSeriesPaneView 等)も定義される。
依存の同梱可否・開発/本番・ESM/IIFE の組み合わせで出力ファイル名が分かれる。スタンドアロンは fancy-canvas 等を同梱し、IIFE は window.LightweightCharts 用。
| 依存同梱 | モード | ES module | IIFE(window.LightweightCharts) |
|---|---|---|---|
| なし | PROD | lightweight-charts.production.mjs | — |
| なし | DEV | lightweight-charts.development.mjs | — |
| あり(standalone) | PROD | lightweight-charts.standalone.production.mjs | lightweight-charts.standalone.production.js |
| あり(standalone) | DEV | lightweight-charts.standalone.development.mjs | lightweight-charts.standalone.development.js |
package.json の exports["."] では、development / production 条件で import 先の .mjs が切り替わる。
README では、標準機能に加え カスタムプラグイン で拡張できるとしている。リポジトリには plugin-examples/・indicator-examples/・packages/create-lwc-plugin があり、公式のインタラクティブ例へのリンクが案内されている。
いずれも src/index.ts からエクスポートされるヘルパ。
NOTICE の attribution と tradingview.com へのリンクを、ユーザー向けに利用可能なページに載せることが求められる。チャート上では attributionLogo レイアウトオプションでリンク表示を満たせる旨が記載されている。
- GitHub: tradingview/lightweight-charts — 本ページの解説元(
repos/lightweight-charts) - 公式ドキュメント(GitHub Pages)
- npm: lightweight-charts
- unpkg — standalone production(README 記載の CDN 例)
- awesome-tradingview — 関連コミュニティプロジェクト