2016-08-12 28 views
1

私は線グラフの後ろにグリッド線を追加しようとしていますが、グリッド線はx軸の最後の項目で終了しません。下記のplnkを参照してください。参照用d3.jsグリッド線がx軸にぶら下がっていますか?

http://plnkr.co/edit/j8qQ19m4l4jgdCsRu1da?p=preview

、私はこのような何かを探しています。

enter image description here

が、私はそれが中央に折れ線グラフをプッシュするx軸に空白のエントリを追加することがいかに簡単かわかりません。

とにかく、誰かがこれを手伝ってくれることを願っています!

おかげ


JS

var x = d3.time.scale() 
    .domain([new Date(2016, 0, 1), new Date(2016, 11, 31)]) 
    .range([0, width]); 

var y = d3.scale.linear() 
    .domain([0, 100]) 
    .range([height, 0]); 

var xAxis = d3.svg.axis() 
    .scale(x) 
    .orient("bottom") 
    .ticks(d3.time.months) 
    .tickFormat(d3.time.format("%B")) 
    .tickSize(-height, 0, 0) 
    .innerTickSize(-height) 
    .tickPadding(15) 

var yAxis = d3.svg.axis() 
    .scale(y) 
    .orient("left") 
    .innerTickSize(-width) 
    .outerTickSize(0) 
    .tickPadding(15) 
    .tickSize(-width, 0, 0) 

var line = d3.svg.line() 
    .x(function(d) { 
    return x(new Date(2016, moment(d.date, 'MMMM').format('M') - 1, 1)); 
    }) 
    .y(function(d) { 
    return y(d.close); 
    }); 

var svg = d3.select("body").append("svg") 
    .attr("width", width + margin.left + margin.right) 
    .attr("height", height + margin.top + margin.bottom) 
    .append("g") 
    .attr("transform", "translate(" + margin.left + "," + margin.top + ")"); 

d3.tsv("data.tsv", type, function(error, data) { 

    svg.append("g") 
    .attr("class", "x axis") 
    .attr("transform", "translate(0," + height + ")") 
    .call(xAxis) 

    svg.append("g") 
    .attr("class", "y axis") 
    .call(yAxis) 

    svg.append("path") 
    .data([data]) 
    .attr("class", "line") 
    .attr("d", line); 

}); 

function type(d) { 
    d.date = d.date; 
    d.close = +d.close; 
    return d; 
} 

TSVによりごdates.Youへ

date close 
January 50 
February 100 
March 75 
April 90 
May 85 
June 40 
July 30 
August 35 
September 12 
October 72 
November 77 
December 5 

答えて

2

次き:

.domain([new Date(2016, 0, 1), new Date(2016, 11, 31)]) 

これは、TSVの値がDecember 5であるので、12月のダニを生成し、その後残りを生成します。

.domain([new Date(2016, 0, 1), new Date(2016, 10, 31)]) 

更新Plnkr:http://plnkr.co/edit/vKlCFpBvDi097337HJyW?p=preview

+0

一つの小さなことが '([新しい日付(.domainをされている必要がありますが、月に戻って、いわば、ちょうど一ヶ月前にこれを編集したい場合021)、新しい日付(2016、11、1)]) 11月は30日しかありません:P – Cyril

+0

@Cyril Haha – thatOneGuy

関連する問題