Web画面上でグラフを生成するライブラリは様々ありますが、最近、Apache EChartsというJavaScriptライブラリを見つけましたので少し触ってみました。
試したのはApache ECharts 5.4です。
簡単に試す
Apache EChartsはCDNでも配布されているようです。
このため、簡単に試すならこんな感じでHTMLを書きます。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <script src="https://cdn.jsdelivr.net/npm/echarts@5.4.1/dist/echarts.min.js"></script> <title>Hello ECharts</title> </head> <body> <div id="main" style="width: 600px;height: 400px;"></div> <script src="mychart.js"></script> </body> </html>
あとはmychart.js
にApache EChartsのコードを書きます。Get Startedに書かれているコードをそのまんま。
var myChart = echarts.init(document.getElementById('main')); var option = { title: { text: 'Hello ECharts' }, tooltip: {}, legend: { data: ['sales'] }, xAxis: { data: ['Shirts', 'Cardigans', 'Chiffons', 'Pants', 'Heels', 'Socks'] }, yAxis: {}, series: [ { name: 'sales', type: 'bar', data: [5, 20, 36, 10, 10, 20] } ] }; myChart.setOption(option);
npm
今時はnpmでライブラリ管理などをするらしいので、そのお作法に従うことにします。使い方は以下のドキュメントにあります。
このときWebとして使うためには、JavaScriptモジュールハンドラを使う必要があります。色々なツールがありますが、ここではwebpackを使うことに。webpackのGetting Startを見ながら作業をします。
具体的には、npm install webpack webpack-cli --save-dev
でインストールし、webpack.config.json
を書きます。
const path = require('path'); module.exports = { entry: './src/index.js', output: { filename: 'main.js', path: path.resolve(__dirname, 'dist'), }, };
JavaScriptにてApache EChartsをimportします。合わせて、webpackのお作法に従い、ファイルをsrc
以下に置いてファイル名も変更しておきます。
import * as echarts from 'echarts'; var index = echarts.init(document.getElementById('main')); var option = { title: { text: 'Hello ECharts' }, tooltip: {}, legend: { data: ['sales'] }, xAxis: { data: ['Shirts', 'Cardigans', 'Chiffons', 'Pants', 'Heels', 'Socks'] }, yAxis: {}, series: [ { name: 'sales', type: 'bar', data: [5, 20, 36, 10, 10, 20] } ] }; index.setOption(option);
HTMLから読み込むJavaScriptはwebpackで生成するファイルとなるため、HTML内でのJavaScriptファイル名を修正します。合わせてCDNの読み込みは削除します。また、dist
以下に格納しておきます。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Hello ECharts</title> </head> <body> <div id="main" style="width: 600px;height: 400px;"></div> <script src="main.js"></script> </body> </html>
あとはnpx webpack --config webpack.config.js
でビルドすればOK。
webpack-dev-serverを使う
開発中はいちいちビルドするのは面倒なので、webpack-dev-serverを使います。具体的な設定は以下のドキュメントに沿って行います。
npm install webpack-dev-server --save-dev
でインストールして、webpack.config.json
を以下のとおり書きます。
const path = require('path'); module.exports = { mode: 'development', entry: './src/index.js', devtool: 'inline-source-map', devServer: { static: './dist' }, output: { filename: 'main.js', path: path.resolve(__dirname, 'dist'), }, };
あとはpackage.json
のscripts
に"start": "webpack serve --open",
を追加し、npm run start
を実行すればOK。
動的にデータを読み込む
バックエンドで生成されたデータを読み込んでグラフを生成するためには、JSON形式でデータを読み込んで処理をすればOK。Apache EChartsには以下のドキュメントがあります。
上記のサンプルではjQueryを使っていますが、私はaxiosで実装してみました。
その他の例
グラフの例はExamplesのページにたくさん掲載されています。
それぞれのグラフをクリックすると、実装例が載っているので、まずはそれをコピペして動作を確認すると良いかなと思います。
細かいAPIの設定項目は以下のドキュメントにあるOptionの項目に目を通すと良いかと思います。