2015-09-11 117 views
0

我有一個帶有2列的CSV文件,第一次我有一些日期,第二次有一些值。如何爲日期設置dc.js x軸

如何初始化x軸以顯示日期?

+0

有哪些問題?你能提供更多細節嗎? –

+0

我有一個CSV文件,第一列中的日期和第二列中的值。我不能把CSV文件的日期放在我的時間序列圖中,用DC.js庫生成...我怎麼能把日期放在x軸的域中? @il_raffa –

+0

爲了清晰起見編輯你的問題,請檢查。星期一我可以挖掘一個例子。確實,我們錯過了設置日期軸的具體示例,但是查看[註釋庫存示例](http://dc-js.github.io/dc)的'moveChart'和'volumeChart'。 js/docs/stock.html)可能會有所幫助。 – Gordon

回答

2

IMO解決你的問題由兩個部分組成:

  1. 解析您的數據的日期爲直流可控格式
  2. 編碼圖表

爲了解析這些日期,你需要在腳本中注入您的csv文件後使用這樣的功能:

var parseDate = d3.time.format.utc("%Y-%m-%dT%H:%M:%S-07:00").parse; 

data.forEach(function(d) { 
     d.TxnDate = parseDate(d.TxnDate); 
    }); 

P請注意,根據您的數據,解析條件可能會有所不同,在這種情況下,請檢查此time formatting article

對於第二部分,下面是一個示例圖表定義,但在此之前您需要定義兩個新變量,它們將作爲我們X軸的起點和終點。定義他們這樣你定義了你的尺寸和組後:

var minDate = transactionDate.bottom(1)[0].TxnDate; 
var maxDate = transactionDate.top(1)[0].TxnDate; 

用於圖表的代碼將是這樣的:

timeChart 
.width(650) 
.height(250) 
.transitionDuration(1000) 
.brushOn(false) 
.dimension(transactionDate) //your dimension created from crossfilter 
.group(fakeTxnDateGroup) // your group 
.elasticY(true) 
.renderHorizontalGridLines(true) 
.renderVerticalGridLines(true) 
.x(d3.time.scale().domain([minDate,maxDate])) //these are the dates we created before this step so that the scale fits according to our data 
.yAxis().tickFormat(d3.format("s")); 

我希望這可以幫助你。如果沒有,請留下一個js小提琴。 謝謝!

+0

可能需要使用'.xUnits()'來獲得條寬度吧?此外,這會以每天/小時/分鐘的速度跳過聚合,這是另一個棘手的部分。 – Gordon