2014-01-07 95 views
0

我正在學習d3和dc.js以進行可視化項目。我的實驗的網址如下:http://junklogic.com/d3scratch/index.html堆疊條形圖上的前2項不顯示在dc.js/d3.js中

我有一個包含10個條目的小CSV文件,如下所示。我有2個問題,這些問題都與第2項:

creature_name,seenby,date,severity 
Dragon,Bob,2013-11-11T10:23:24,1 
Dire Wolf,Sue,2013-11-11T08:24:23,3 
Unicorn,Jim,2013-11-12T11:10:10,1 
Unicorn,Ann,2013-11-12T12:45:45,1 
Kraken,Bob,2013-11-12T08:31:51,2 
Chimera,Ann,2013-11-12T01:05:08,2 
Unicorn,Ann,2013-11-13T04:49:36,1 
Unicorn,Bob,2013-11-14T09:22:26,1 
Chimera,Ann,2013-11-16T12:37:04,2 
Troll,Ann,2013-11-18T18:01:58,3 

的2個問題我有是:

  1. 第2名代表的第一天(2013年11月11日)的條目不顯示在條形圖中。數據表和餅圖正確顯示數據(全部10個條目)。
  2. 「嚴重性」是從1到3的計數。條形圖顯示0到2.數據表和餅圖正常顯示。

非常感謝您的幫助。這是一種新的體驗,我希望我的代碼是可以理解的。

回答

1

您的X軸域爲「2013-11-11T10:23:24」至「2013-11-18T18:01:58」。

var xScale = d3.time.scale().domain([new Date(data[0].date), new Date(data[data.length - 1].date)]); 

您的x尺寸四捨五入到一天,所以您的酒吧將呈現在「2013-11-11T00:00:00」。因此前兩個值小於域的下端。你可能想要使用d3.time.day來計算域,也許每一端都有一天的緩衝區。

var severityByDay = info.dimension(function(d) { 
     return d3.time.day(d.date); 
    }); 

試試這個,看看所有的酒吧:

var xScale = d3.time.scale().domain([new Date(2013, 10, 10), new Date(2013, 10, 19)]); 

對於線圖上的傳說,你要命名每個堆棧...否則將默認爲指數堆棧。

https://github.com/NickQiZhu/dc.js/blob/master/web/docs/api-latest.md#stack-mixin

.STACK(組[,名稱,訪問器])棧新crossfilter組到該圖表具有任選自定義值存取器。同一圖表中的所有堆棧將共享相同的密鑰訪問器,因此共享相同的一組密鑰。更具體地說,想象在堆疊的條形圖中,所有條塊將在垂直堆疊時使用x軸上相同的一組鍵位置。如果指定了名稱,那麼它將用於生成圖例標籤。

這似乎顯示正確的價值觀和正確的顏色:

.group(severityHigh, "1") 
     .stack(severityMed, "2") 
     .stack(severityLow, "3") 
     .colors(graphColors) 
     .colorDomain([1, 3]) 

我希望這有助於! -DJ

+0

這提供了一些很好的見解。非常感謝你。 – supergalactic