2016-08-23 128 views
1

需要在折線圖中顯示線條,並能夠移動拼貼,查看最大比特率值線,查看懸停時的標籤和軸指針,與表格和時間Slider.Y維度需要顯示「比特率總計」或「比特率平均」(如代碼中所定義)。 X維度需要在星期範圍內顯示15分鐘的時間間隔。DC.js折線圖 - 不顯示線條

我可以將數據上傳到表格中,但不能上傳到折線圖中。我可以使用.renderDataPoints()在圖上看到點,但沒有行。 我檢查了數據 - 無法找到任何返回的null/NaN值,不使用任何舊版本的顏色。代碼見https://jsfiddle.net/dani2011/bu2ag0f7/8/。試圖用var數據替換我的CSV,但此刻在小提琴中沒有顯示任何內容。整個代碼顯示在https://groups.google.com/forum/#!topic/dc-js-user-group/MEslyF2RWRI

任何幫助將不勝感激。

回答

2

Here's my go-to-answer for how to put data into a jsFiddle。基本上最簡單的方法是將它粘貼到HTML中未使用的標籤中。 bl.ocks.org/blockbuilder.org更容易。

這是你擺弄的一個分支與數據加載的方式: http://jsfiddle.net/gordonwoodhull/bu2ag0f7/17/

我也不得不刪除從列名的空間,因爲那些有d3.csv困惑並引起BITRATE計算失敗。

在renderlet內部還有一些雜亂的代碼,因爲dim不存在的投訴而失敗。

數據未顯示的主要原因是因爲輸入組沒有生成可用的聚合數據。您的數據在時間上非常接近,因此按星期彙總會綜合所有內容。

調試這個問題的方法是把一個斷點或一個的console.log圖表初始化之前和看羣組。()

的結果在這種情況下bitrateWeekMinIntervalGroupMove和minIntervalWeekBitrateGroup正在返回與一個陣列鍵/值對。一點不能畫線。 :)

它看起來像你最初想要以15分鐘的時間間隔進行聚合,所以讓我們開始工作。

無論出於何種原因,crossfilter,維度級別和組級別都有兩個級別的聚合。這個維度將首先生成一個密鑰,然後該組將進一步優化這些密鑰。

您的min15函數會將每個時間鍵映射到它之前的15分鐘標記,但它需要分辨率高於15分鐘的數據。因此,讓我們把這些團體在dateDimension,這尚未被映射到一個更低的分辨率:

var minIntervalWeekBitrateGroup = dateDimension.group(min15).reduceSum(function (d) { 
    return +d.BITRATE 
}); 
var bitrateWeekMinIntervalGroupMove = dateDimension.group(min15).reduce(
... 

大,現在有30個數據點。它畫線。

squished lines

我做了點小了些:)因爲在30個像素,這是很難看到的線條。

在使用範圍圖放大顯示更多行:

enter image description here

目前似乎仍然是在降低功能故障(或地方),因爲線下降到零,當你在太遠放大,但希望這足以讓你再次感動。

我的小提琴:http://jsfiddle.net/gordonwoodhull/bu2ag0f7/25/

+0

您的幫助是無價的。謝謝Gordon所有的解釋,時間和代碼中的實際變化 - 我非常欣賞這一點 – Dani