如何在使用Rickshaw.Graph.Ajax时显示数据

时间:2013-12-19 00:27:14

标签: javascript d3.js rickshaw

1.。)如何使用新的Rickshaw.Graph.Ajax访问数据?我的完整代码如下,包括通过AJAX调用的JSON示例集:

(function(){
    var ajaxGraph = new Rickshaw.Graph.Ajax( {
        element: document.getElementById("chart"),
        width: 400,
        height: 200,
        renderer: 'line',
        dataURL: '/data.json',
        onData: function(data) {
            var arrData = [];
            $.each(data[0], function(i, l){
                var rawData = l.data;
                arrData.push(rawData);
                return arrData;
            });

        }
    } );

})();

// JSON SAMPLE

[{
    "took": 32,
    "total": 34200,
    "strokeVolume_count": {
        "name": "strokeVolume_count",
        "data": [
            {"x": 1387130400000,"y": 1800},
            {"x": 1387134000000,"y": 1800}
         ]
     }
}]

2.。)我怎么知道何时使用.render()方法?我已经看到过这个例子在某些图表上使用而不在其他图表上。我已经阅读了Rickshaw / github文档,解释说您使用它来绘制或重绘图形,但是,我已经看到其他示例在不使用此方法的情况下显示。

1 个答案:

答案 0 :(得分:1)

我不完全确定你的第一个问题是什么意思,但你需要从onData函数返回一系列系列对象。

关于调用graph.render(),我已成功将调用放在onComplete回调中,如下所示:

(function(){
    var ajaxGraph = new Rickshaw.Graph.Ajax( {
        element: document.getElementById("chart"),
        width: 400,
        height: 200,
        renderer: 'line',
        dataURL: '/data.json',
        onData: function(data) {
            return [{
                name : "Stroke Volume"
                data : data[0].strokeVolume_count.data;
            }];
            // or simply return [data[0].strokeVolume_count]; since it looks like a series object already
        },
        onComplete: function() {
            // this is also where you can set up your axes and hover detail
            this.graph.render();
        }
    } );

})();