BMS, Movie, Illustrations, Programming

グラフにスクロールバーを使いたいならApache EChartsが良さそう!

グラフにスクロールバーを使いたいなら Apache ECharts が良いとの情報を頂いたので使ってみました。

Apache ECharts デモ

スクロールバーの見た目も悪くなさそうですね!

デモページ: https://yuinore.github.io/charts-demo/echarts_demo.html

<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <script src="./lib/echarts.js"></script>
    <script src="./data/data.js"></script>
    <script src="./echarts_demo.js"></script>
  </head>
  <body>
    <div id="main" style="width: 99%; height: 99%"></div>
  </body>
</html>
setTimeout(() => {
  var chartDom = document.getElementById('main');
  var myChart = echarts.init(chartDom);
  var option = {
    title: {
      left: 'center',
      text: 'Window Function Example',
    },
    tooltip: {
      trigger: 'axis',
      position: 'top',
    },
    xAxis: {
      data: labels.map((x) => `${x}`),
    },
    yAxis: {
    },
    grid: {},
    dataZoom: [
      /* x軸方向のスクロールバーの設定 */
      {
        type: 'slider',
        xAxisIndex: 0,
        filterMode: 'none',
        start: 10, /* percentage */
        end: 20, /* percentage */
      },
      {
        type: 'inside',
        xAxisIndex: 0,
        filterMode: 'none',
      },
      /* y軸方向のスクロールバーの設定 */
      {
        type: 'slider',
        yAxisIndex: 0,
        filterMode: 'none',
      },
      {
        type: 'inside',
        yAxisIndex: 0,
        filterMode: 'none',
      },
    ],
    series: [
      {
        data: values,
        type: 'bar',
      },
    ],
    animation: false,
  };

  option && myChart.setOption(option);

  window.onresize = function () {
    myChart.resize();
  };
}, 1);

サンプルが豊富なので、わざわざドキュメントを読まなくても、似たようなサンプルのソースコードを読むだけで色々なカスタマイズが出来ました。細かいカスタマイズにはドキュメントを読む必要があるかもしれません。

Examples – Apache ECharts

Google Charts

最初はこれを使っていたのですが、スクロールバーが付けられないということで移行を検討しました。

Chart.js

新型コロナウイルス 国内感染の状況 – 東洋経済オンライン」というサイトではこれを使用していたようですが、github にソースコードが上がっていたので見てみたところ、どうやらdivの中にグラフを入れて表示させ、y軸のためにグラフを2つ重ねるというパワープレイのようでした。

表示を少し変えてみると、下図のようにx軸が2つ表示されているのが分かります。

こちらも面倒そうだったので断念しました。

ApexCharts

見た目もかっこいいし、スクロールバーもあるということで実装してみたのですが、そもそも重すぎて使い物になりませんでした。

デモページ: https://yuinore.github.io/charts-demo/apexcharts_demo.html

また、そもそもスクロールバーは過去のバージョンで既に削除されているとのことでした。

The scroller was removed as it has some memory leaks.

https://github.com/apexcharts/apexcharts.js/issues/2046

ならトップページから消せよ! と思ったり思わなかったり。みんな困っていると思うんですけどね……。

Features – ApexCharts.js

かっこいいので少量のデータの表示には良さそうでした。
またSVGやPNGがダウンロードできる機能もあるみたいでした。

まとめ

ということで Apache ECharts の紹介とそこに至るまでの経緯でした。色々と時間も無駄にしてしまいましたが勉強になりました。