dygraph を使う

 ここでは、JavaScript により簡単にグラフを作成出来るライブラリー dygraph について記述します。
 dygraph は、特に折れ線グラフを書くのには便利なツールです。 参考

■ dygraphs を使うには

◆dygraphs を使うには、以下のどちらかの方法で dygraph.js 又は dygraph.min.js を引用します。
 1. ダウンロードサイトから dygraph.js などをダウンロードして組み込みます。
 2. <script src="https://cdnjs.cloudflare.com/ajax/libs/dygraph/2.0.0/dygraph.min.js"></script> のようなタグを記述してホストサイトにリンクして利用します。
◆次に JavaScript内に、g = new Dygraph(container,data,{option}) と記述することでグラフを表示できます。
  containerは、document.getElementById("graphdiv")のように表示要素を指定します。
  dataは、表示するデータ値を指定します。ここにはデータリストの他、ファイルや関数を記述することも出来ます。
  optionは、グラフ表示の書式等を指定します。
 つまり、data と option を書き換えることで色々なグラフが描けるということです

■ 基本サンプル

 具体例で見てみます。ここでは、タグリスト内に csv データを記述しています。
<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>dygraph sample02</title>
  <script type="text/javascript" src="dygraph-combined-dev.js"></script>
</head>
<body>
  <div id="graphdiv"></div>
  <script type="text/javascript">
      g = new Dygraph(
        document.getElementById("graphdiv"), // 表示ID名
        "Date,温度1,温度2\n" +               // データ項目
        "2008-05-07,45,30\n" +
        "2008-05-08,60,50\n" +
        "2008-05-09,20,35\n" +
        "2008-05-10,50,45\n" +
        "2008-05-11,65,40\n",                // 以上 CSV 
        {                                    // option 指定
          legend: 'always',                  // 凡例常表示
          title: 'サンプルグラフ',
          xlabel: '月日',
          ylabel: '温度 (℃)',
          valueRange: [0,80]                 // yスケール指定
        }
      );
  </script>
</body>
</html>
          
【 左記の例 】 下図クリックで起動

参考サイト
( 6行目) dygraph-combined-dev.js を読み込み「dygraph」を利用可能にします
(11行目) CSV データを Dygraph に取り込みます
(13-18行目) 読み込む CSV データです。外部ファイルの場合はサーバー上に置きます
(20-24行目) タイトル等の表示オプションを記述します

■ data と option について

 上の例でも解かるように、data と option の記述のみを換えることで色々なグラフが描けることになります。

 ◆data は次の5種の方法を採ることが出来ます。詳細は、こちらを参照ください。
  1. CSV data csv は headers(最初の行)部と、x値,y値記述部とで構成されます。labels option が無指定の時は headers の値が使われます。 x値が日付か数値かは自動判別されます。 詳細
  2. 配列 配列(ネイティブ形式)の場合ヘッダー部は無く、labels オプションでそれを指定する必要があります。
  3. 外部データ URLを指定して、そのサーバー上のデータを CSV として読み取ります。 詳細
  4. 関数 関数値を配列として出力し、dygraphs で表示します。  参考
  5. DataTable Google Visualization LibraryのDataTableを入力データとして指定することもできます。 参考
 ◆option でグラフのスタイルを変えられます。また作図後 updateOptions で変更することもできます。  dygraph.css
  1. ラベルラベルタイトルなどを記述・装飾します。  凡例表示
  2. 軸表示 軸表示例  対数軸  二軸表示  軸無し  X軸表示
  3. グラフ表示 表示制御  パターン表示  曲線表示  棒グラフ等
  4. その他 手書き  自動作図  ポインタ同期  ズーム  live data

■ 配列データを読み込んでグラフを表示

 配列データを読み込んでグラフを表示する例を示します。 参考
<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>dygraph sample</title>
  <script type="text/javascript" src="dygraph.min.js"></script>
    <style>
      body{ background:url(../img/p_bcg007.gif); }
      section{ width:800px; margin:0 auto; text-align:center; }
      section>div{ width:100%; border:1px solid gray; }
      #graphdiv{ width:500px; height:360px; margin:0 auto; border:1px solid black; }
      .dygraph{ border:1px solid black; margin:15px 10px; padding:2px; }
      .dygraph-title {
        text-align:center; font-size: 24px; text-shadow: gray 2px 2px 2px;
      }
      .dygraph-legend {
        font-size: 13px; position: absolute; z-index: 10;
        width: 100px; height: 60px; padding: 2px;
        text-align:left; overflow: hidden;
        background-color: rgba(240, 250, 250, 0.7);
        border: 1px solid #888; border-radius: 6px;
      }
      .dygraph-legend-line {
        display: inline-block; position: relative;
        padding-left: 1.2em; bottom: .5ex; height: 10px;
        border-bottom-width: 2px; border-bottom-style: solid;
      }
      .dygraph-xlabel { text-align:center; font-size: 13px; }
      .dygraph-ylabel {
        text-align:center; font-size: 13px;
        transform: rotate(-90deg); margin-left: 30px;
      }
  </style>
</head>
<body>
  <div id="graphdiv"></div>
  <script type="text/javascript">
      g = new Dygraph(
        document.getElementById("graphdiv"), 
        [                                  // データ配列
          [ new Date("2008/05/07"),45,30 ],
          [ new Date("2008/05/08"),60,50 ],
          [ new Date("2008/05/09"),20,35 ],
          [ new Date("2008/05/10"),50,45 ],
          [ new Date("2008/05/11"),65,40 ]
        ],
        {
          legend: 'always', labelsSeparateLines: true,
          title: 'Array Data 利用',
          labels: ['Date','温度1','温度2'],
          xlabel: '月日',
          ylabel: '温度(℃)',
          valueRange: [0,90],
          series: {
            温度1: { strokeWidth: 0.5 },
            温度2: { strokeWidth: 2.0 }
          }
        }
      );
  </script>
</body>
</html>
          
【 左記の例 】下図クリックで起動

凡例記述等
( 6行目) 「dygraphs」の JavaScript を読み込みます
(13行目) title の書式を指定します
(16,23行) 凡例の書式を指定します
(29行目) Y軸ラベルの書式を指定します
(41-45行) データ配列を記述します
(48行目) 凡例の表示方法を指定します
(50行目) 各データ名を記述します
(53行目) Y軸の表示範囲を指定します
(55,56行) 表示線のプロパティを指定します

■ 外部ファイルを読み込んでグラフを表示

  Javascript では、サーバー上にあるファイルなら読み込めますが、HTML5 では「ユーザーによる操作」があれば、ローカルファイルでも読み込むことが出来ます。ここでは、FileReader でローカルファイルを読み込みます。
 さらに「dygraphs」を使って、このデータからグラフを書きます。↓
<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>File 読み込みテスト</title>
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <script src="https://cdnjs.cloudflare.com/ajax/libs/dygraph/1.1.1/dygraph-combined-dev.js"></script>
  <script>
      function init(){
        var file = document.querySelector('#getfile');
        file.onchange = function (){
          var fileList = file.files;
          var reader = new FileReader();
          reader.readAsText(fileList[0]); // onchange時に読込む
          reader.onload = function() {   //読込み後グラフ表示
              ma= reader.result.split("\n"); mas2 = ma.length-2;
              mc = ma[0].split(",");
              alert(mas2+" 地点の "+mc[0]+"; "+mc[1]+","+mc[2]+" を読込ました"); 
              g = new Dygraph( document.getElementById("graph"), reader.result,{
                  showRoller: false, valueRange: [0,100]
              } );
          };
        };
      };
  </script>
</head>
<body onload="init();">
  <input type="file" id="getfile" accept="text/*">
  <div id="graph"></div>
</body>
</html>
          
【 左記の例 】下図クリックで起動

参考サイト
( 7行目) 「dygraphs」の JavaScript を読み込みます
(11行目) 「onchange」で目的ファイルの読み込みを開始します
(13行目) 「FileReader」で目的ファイル(test.csv)を読み込みます
(19行目) 表示データを書込みます
(20行目) グラフ表示のオプションを読み込みます

■ dygraphs を利用する

Examples

■ その他 グラフ表示する

canvas でグラフ
Google Chart のページ  gallery  Chart.js を使う  chart.js入門

■ 参考サイト