前回の続き。
dojoによるグラフはこれまで配列を直接突っ込んでいましたが、dojo.dataオブジェクトを使用することができます。
dojox/data/配下には大量のデータAPIがあり、JSONやXMLやCSVやHTMLテーブルなどからデータを読み取ると全てdojo.dataオブジェクトとなり以後は統一的に扱えますよ、ということになるみたいです。
とりあえずサンプルで動作確認。
dojoによるグラフはこれまで配列を直接突っ込んでいましたが、dojo.dataオブジェクトを使用することができます。
dojox/data/配下には大量のデータAPIがあり、JSONやXMLやCSVやHTMLテーブルなどからデータを読み取ると全てdojo.dataオブジェクトとなり以後は統一的に扱えますよ、ということになるみたいです。
とりあえずサンプルで動作確認。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="dojo/dojo.js" djConfig="parseOnLoad: true, isDebug: true"></script>
<script type="text/javascript">
dojo.require("dojox.charting.DataSeries");
dojo.require("dojo.data.ItemFileWriteStore");
dojo.require("dojox.charting.Chart2D");
var drawChart = function(){
//JSONデータ
var jsonData = {
data:{items:[
{value:9166.85},
{value:9258.32},
{value:9230.56},
{value:9218.88},
{value:9210.49}
]}
};
//データを読み込む
var store = new dojo.data.ItemFileWriteStore(jsonData);
//折れ線グラフ
var myChart = new dojox.charting.Chart2D("myChart");
myChart.addPlot("default", {type: "Lines"});
//グラフに値追加はdojox.charting.DataSeriesを経由
myChart.addSeries("stockprice", new dojox.charting.DataSeries(store));
myChart.render();
}
//起動時実行
dojo.addOnLoad(drawChart);
</script>
</head>
<body class="claro">
<div id="myChart" style="width: 400px; height: 200px;"></div>
</body>
</html>
前やったやつからの変更点は、データが配列からJSONになったこと、addSeriesでデータを追加する際にdojox.charting.DataSeriesを経由することになったことの2点です。
dojo.data.ItemFileWriteStoreという、あたかもファイルから読み書きできるかのようなクラス名ですが、見てのとおり直接値を突っ込んでいます。
もちろん別のファイルから読み込みこともでき、その場合は
var store = new dojo.data.ItemFileReadStore({url:"myChart.json"});
と記述します。
ただしこの場合、JSONデータの読み込みが非同期になります。
どういうことかって、dojo.data.ItemFileReadStoreオブジェクトの作成直後に中身を確認してもデータが入っていないのです。
ちゃんとデータが取得できているか確認したい場合は、その前にfetch()する必要があります。
てかこれ、単純に元のデータがほしい場合とかJSONとして出力したい場合とかはItemFileWriteStoreからどうやって取り出せばいいんだ?
PR
トラックバック
トラックバックURL: