2013-04-29 57 views
0

嘗試使用立體派和D3編寫簡單的可視化。無可否認,我對使用立體主義和D3相當陌生,立體主義文檔很難理解。立體派:系列不渲染,但獲取數值

輪詢一個數值的URL以檢索'rate',然後像在示例中那樣將該值推送到數組上。畫布的東西不渲染,最初,數值也不像Cubism.js的例子。過了一會兒,一個數字顯示出反映了最新的調查價值。調試JavaScript確實顯示數組隨着時間的推移隨着值而擴展。

任何幫助理解問題更好,將不勝感激。

render: function() { 
    var thatElement = this.el; 

    function update(model) { 
    var values = []; 

    return context.metric(function(start, stop, step, callback) { 
     model.fetch(); 
     var data = model.toJSON(); 
     if (data[0]) values.push(parseInt(data[0])); 
     callback(null, values = values.slice(-context.size())); 
    }, "Rate"); 
    } 

    var context = cubism.context() 
       .serverDelay(0) 
       .clientDelay(0) 
       .step(5000); 

    var foo = update(this.model); 

    d3.select(thatElement).append("div").call(function(div) { 
    div.append("div") 
     .attr("class", "axis") 
     .call(content.axis().orient("top")); 

    div.selectAll(".horizon") 
     .data([foo]) 
     .enter().append("div") 
     .attr("class", "horizon") 
     .call(context.horizon()); 
    div.append("div") 
     .attr("class", "rule") 
     .call(context.rule()); 
    }); 
} 

此外,注意到如果我在其他視圖中調用cubism.context()東西,它將打破前面的視圖。

+0

你確定有div.selectAll方法嗎?因爲我只看到d3.selectAll。 – 2013-05-01 02:23:26

+0

我想通了。時間序列默認大小爲1440(四小時,每秒1個像素),並且它在封裝div之外進行渲染。 現在的問題決定了系列的大小,或者至少迫使它渲染,使系列消失在左邊而不是右邊。 – Maz 2013-05-01 22:00:56

+0

經過實驗後,我發現每個數據點有一個像素效果最好。 – 2013-05-02 02:33:33

回答

0

嘗試通過在您的基本HTML文件中使用class「horizo​​n」編寫div元素來調試該問題。我也面臨同樣的問題,但是這種div操作在幾秒鐘內解決了它。