2016-06-07 88 views
1

我繪製了一張d3圖,代表過去30天的一些數據。所以我的X軸是一個線性標度,因爲我沒有使用日期(而是使用天數)。現在展現在x軸上,我使用如下代碼D3線性刻度,如何將自定義字符串顯示爲刻度?

var xAxis = d3.svg.axis() 
      .scale(x) 
      .orient("bottom") 
      .outerTickSize(15) 
      .ticks(4) 

一些事情這讓我像以下四個蜱: enter image description here

現在我的問題是,不是這些蜱(數字),我想以顯示來自以下陣列的刻度線標籤:

var xArray = ['one month ago', '3 weeks ago', '2 weeks ago', '1 week ago', 'today']; 

任何想法如何做到這一點? (我想我不能使用序數標度,因爲繪製的圖表使用線性標度,所以我不能混淆)

+0

我想我知道你需要什麼,但你可以提供一個plunker? (plnkr.co) –

+0

@AlexeyAyzin你有和下面的答案一樣的建議嗎?它確實工作 –

+0

是的。好工作搞清楚。 –

回答

3

這應該早就發生過,我可以使用一個不同的(順序)比例尺作爲軸目的。無論如何可能會幫助有同樣疑問的人

var xScaleForAxis = d3.scale.ordinal() 
      .domain(xArray) 
      .rangePoints([0, WIDTH]); 

現在我可以使用這個比例來獲得所需的結果。

var xAxis = d3.svg.axis() 
      .scale(xScaleForAxis) 
      .orient("bottom") 
      .innerTickSize(-HEIGHT) 
      .ticks(4) 

這給了我以下預期的結果。

enter image description here