2016-06-28 126 views
2

我想添加陰影到D3折線圖的背景。該線的不同部分將會有不同的陰影。這裏是一個example如何添加背景陰影到D3折線圖

我的做法是添加矩形svg圖表,但這似乎並沒有工作,因爲我不知道如何使寬度符合數據。

here is a jsfiddle

這裏是矩形創作的一個例子:

svg.append("rect") 
    .attr("class", "shading") 
    .attr("x", d[1].date) 
    .attr("y", 80) 
    .attr("width", 20) 
    .attr("height", 20) 
    .attr("fill", "blue"); 

我在正確的軌道上?如何找到寬度以便與數據相符?

更新:會有多個不同寬度的正方形,所以我不能只抓住整個svg的寬度。

回答

0

與數據第一補SVG,然後之後得到了width屬性,它會自動計算它

+0

有將是多個不同寬度的平方,所以我不能只抓住整個svg – auto

1

你可以這樣說:

//get all the ticks in x axis 
//make a pair of it refer: d3.pair 
var data = d3.pairs(svg.selectAll(".x .tick").data()); 
    //make a color category 
var c10 = d3.scale.category10(); 
//to svg append rectangles 
svg.selectAll("rect") 
    .data(data)//for the tick pair 
     .enter() 
     .append("rect") 
    .attr("class", "shading") 
    .attr("x", function(d){return x(d[0])})//x will be the 1st tick 
    .attr("y", 0) 
    .attr("width", function(d){return (x(d[1]) - x(d[0]));})//width will be the diff of 1st and 2nd tick 
    .attr("height", height) 
    .attr("opacity", 0.2) 
    .attr("fill", function(d,i){return c10(i)});//use color category to color the rects. 

工作代碼here

+1

的寬度來使用'd3.pairs'! –

+0

謝謝@GerardoFurtado – Cyril

+0

謝謝!但我有點困惑。我如何調整它,使廣場可以是任何寬度,而不僅限於蜱?例如,你的例子,如果我想陰影是不同的twidths – auto