2017-05-30 99 views
0

的數據是這樣的,在暫且:如何指定日期格式d3.js爲x軸

this.Data = { 
    Title: "Chart Title", 
    XAxisTitle: "", 
    YAxisTitle: "", 
    Series: [{ 
     Title: "Series A", 
     Data: [{ X: new Date(2017, 5, 31), Y: 43 }, { X: new Date(2017, 5, 30), Y: 32 }, { X: new Date(2017, 5, 29), Y: 78 }, { X: new Date(2017, 5, 28), Y: 15 }, { X: new Date(2017, 5, 27), Y: 12 }] 
     }, 
     { 
      Title: "Series B", 
      Data: [{ X: new Date(2017, 5, 31), Y: 13 }, { X: new Date(2017, 5, 30), Y: 72 }, { X: new Date(2017, 5, 29), Y: 33 }, { X: new Date(2017, 5, 28), Y: 45 }, { X: new Date(2017, 5, 27), Y: 22 } 
     ] 
    }] 
}; 

這是行不通的。如果我離開.tickFormat,我只會顯示原始刻度。但通過它似乎有意義的崩潰的方式。

private drawXAxis(): void { 
    this.xAxis = d3.svg.axis().scale(this.xScale) 
     .tickFormat(d3.time.format("%Y-%m-%d")) 
     .tickPadding(15); 
    this.svg.append('g') 
     .attr('class', 'x axis') 
     .attr('transform', 'translate(0,' + this.height + ')') 
     .call(this.xAxis); 
} 

它可能必須作爲幫助函數傳遞,但我在任何地方都找不到任何示例來執行此操作。

回答

0

使用此功能可以遍歷數據並將日期更改爲所需的格式。

var parseDate = d3.time.format("%Y-%m-%d") 

function formatDate(data){ 
    data.forEach(function (loop1) { 
    loop1.Series.forEach(function (loop2) { 
     loop2.Data.forEach(function (d) { 
      d.X = parseDate(d.X); 
     }); 
    }); 
    }); 
}