ここでは、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 データを記述しています。
04 | < meta charset = "UTF-8" > |
05 | < title >dygraph sample02</ title > |
06 | < script type = "text/javascript" src = "dygraph-combined-dev.js" ></ script > |
09 | < div id = "graphdiv" ></ div > |
10 | < script type = "text/javascript" > |
12 | document.getElementById("graphdiv"), // 表示ID名 |
13 | "Date,温度1,温度2\n" + // データ項目 |
14 | "2008-05-07,45,30\n" + |
15 | "2008-05-08,60,50\n" + |
16 | "2008-05-09,20,35\n" + |
17 | "2008-05-10,50,45\n" + |
18 | "2008-05-11,65,40\n", // 以上 CSV |
20 | legend: 'always', // 凡例常表示 |
24 | valueRange: [0,80] // yスケール指定 |
【 左記の例 】 下図クリックで起動
【参考サイト】
( 6行目) dygraph-combined-dev.js を読み込み「dygraph」を利用可能にします
(11行目) CSV データを Dygraph に取り込みます
(13-18行目) 読み込む CSV データです。
外部ファイルの場合はサーバー上に置きます
(20-24行目) タイトル等の表示
オプションを記述します
■ data と option について
上の例でも解かるように、data と option の記述のみを換えることで色々なグラフが描けることになります。
◆data は次の5種の方法を採ることが出来ます。詳細は、
こちらを参照ください。
- CSV data
csv は headers(最初の行)部と、x値,y値記述部とで構成されます。labels option が無指定の時は headers の値が使われます。
x値が日付か数値かは自動判別されます。 詳細
- 配列
配列(ネイティブ形式)の場合ヘッダー部は無く、labels オプションでそれを指定する必要があります。 例
- 外部データ
URLを指定して、そのサーバー上のデータを CSV として読み取ります。 詳細
- 関数
関数値を配列として出力し、dygraphs で表示します。
参考
- DataTable
Google Visualization LibraryのDataTableを入力データとして指定することもできます。
参考
◆
option でグラフの
スタイルを変えられます。また作図後
updateOptions で変更することもできます。
dygraph.css
- ラベル等
ラベルやタイトルなどを記述・装飾します。
凡例表示
- 軸表示
軸表示例
対数軸
二軸表示
軸無し
X軸表示
- グラフ表示
表示制御
パターン表示
曲線表示
棒グラフ等
- その他
手書き
自動作図
ポインタ同期
ズーム
live data
■ 配列データを読み込んでグラフを表示
配列データを読み込んでグラフを表示する例を示します。
参考
04 | < meta charset = "UTF-8" > |
05 | < title >dygraph sample</ title > |
06 | < script type = "text/javascript" src = "dygraph.min.js" ></ script > |
08 | body{ background:url(../img/p_bcg007.gif); } |
09 | section{ width:800px; margin:0 auto; text-align:center; } |
10 | section>div{ width:100%; border:1px solid gray; } |
11 | #graphdiv{ width:500px; height:360px; margin:0 auto; border:1px solid black; } |
12 | .dygraph{ border:1px solid black; margin:15px 10px; padding:2px; } |
14 | text-align:center; font-size: 24px; text-shadow: gray 2px 2px 2px; |
17 | font-size: 13px; position: absolute; z-index: 10; |
18 | width: 100px; height: 60px; padding: 2px; |
19 | text-align:left; overflow: hidden; |
20 | background-color: rgba(240, 250, 250, 0.7); |
21 | border: 1px solid #888; border-radius: 6px; |
23 | .dygraph-legend-line { |
24 | display: inline-block; position: relative; |
25 | padding-left: 1.2em; bottom: .5ex; height: 10px; |
26 | border-bottom-width: 2px; border-bottom-style: solid; |
28 | .dygraph-xlabel { text-align:center; font-size: 13px; } |
30 | text-align:center; font-size: 13px; |
31 | transform: rotate(-90deg); margin-left: 30px; |
36 | < div id = "graphdiv" ></ div > |
37 | < script type = "text/javascript" > |
39 | document.getElementById("graphdiv"), |
41 | [ new Date("2008/05/07"),45,30 ], |
42 | [ new Date("2008/05/08"),60,50 ], |
43 | [ new Date("2008/05/09"),20,35 ], |
44 | [ new Date("2008/05/10"),50,45 ], |
45 | [ new Date("2008/05/11"),65,40 ] |
48 | legend: 'always', labelsSeparateLines: true, |
49 | title: 'Array Data 利用', |
50 | labels: ['Date','温度1','温度2'], |
55 | 温度1: { strokeWidth: 0.5 }, |
56 | 温度2: { strokeWidth: 2.0 } |
【 左記の例 】下図クリックで起動
【凡例記述等】
( 6行目) 「
dygraphs」の JavaScript を読み込みます
(13行目) title の書式を指定します
(16,23行) 凡例の書式を指定します
(29行目) Y軸ラベルの書式を指定します
(41-45行) データ配列を記述します
(48行目) 凡例の表示方法を指定します
(50行目) 各データ名を記述します
(53行目) Y軸の表示範囲を指定します
(55,56行) 表示線のプロパティを指定します
■ 外部ファイルを読み込んでグラフを表示
Javascript では、サーバー上にあるファイルなら読み込めますが、HTML5 では「
ユーザーによる操作」があれば、ローカル
ファイルでも読み込むことが出来ます。ここでは、
FileReader でローカルファイルを読み込みます。
さらに「
dygraphs」を使って、このデータからグラフを書きます。↓
04 | < meta charset = "UTF-8" > |
05 | < title >File 読み込みテスト</ title > |
06 | < meta name = "viewport" content = "width=device-width, initial-scale=1.0" > |
10 | var file = document.querySelector('#getfile'); |
11 | file.onchange = function (){ |
12 | var fileList = file.files; |
13 | var reader = new FileReader(); |
14 | reader.readAsText(fileList[0]); // onchange時に読込む |
15 | reader.onload = function() { //読込み後グラフ表示 |
16 | ma= reader.result.split("\n"); mas2 = ma.length-2; |
17 | mc = ma[0].split(","); |
18 | alert(mas2+" 地点の "+mc[0]+"; "+mc[1]+","+mc[2]+" を読込ました"); |
19 | g = new Dygraph( document.getElementById("graph"), reader.result,{ |
20 | showRoller: false, valueRange: [0,100] |
27 | < body onload = "init();" > |
28 | < input type = "file" id = "getfile" accept = "text/*" > |
29 | < div id = "graph" ></ div > |
【 左記の例 】下図クリックで起動
【参考サイト】
( 7行目) 「
dygraphs」の JavaScript を読み込みます
(11行目) 「onchange」で
目的ファイルの読み込みを開始します
(13行目) 「
FileReader」で目的ファイル(test.csv)を読み込みます
(19行目) 表示
データを書込みます
(20行目) グラフ表示の
オプションを読み込みます
■ dygraphs を利用する
■ その他 グラフ表示する
■ 参考サイト