2016-08-10 4 views
0

以下の私は、この例に非常に似チャート開発しています、ライン上の領域を入力します。http://jsfiddle.net/ezanker/L6nfq/NVD3折れ線グラフ - 代わり

をしかし、その代わりに青色の線の下の青い部分を埋めるのは、私はエリアを埋めるためにしたいですその上に。この場合、私は何をすべきですか?

純粋なD3.js(関数y0y1を使用)を使用してこれを行う簡単な方法がありますが、NVD3ライブラリを使用したソリューションが必要です。

この下の領域ではなく、線の上の青色の領域を塗りつぶすために、この小さな変化を加えることは可能ですか?

ありがとうございました。

答えて

1

私はnvd3によって提供される機能を使用して見ることができまさか、私はちょうどベースd3でそれをハックしたいが:

setTimeout(function(){ 
    var area = d3.svg.area() 
    .x(function(d) { return chart.xScale()(d.x); }) 
    .y0(0) 
    .y1(function(d) { return chart.yScale()(d.y); }); 
    var t = d3.select(".nv-series-2"), 
     d = t.datum().values; 
    t.append("path") 
    .attr("d", area(d)) 
    .style("fill", "steelblue"); 
}, 10); 

フィドルhereを更新しました。コメントどのようにこの狂気について

FOR

EDITS:

var area = d3.svg.area() 
    .x(function(d) { 
     return chart.xScale()(d.x); 
    }) 
    .y0(0) 
    .y1(function(d) { 
     return chart.yScale()(d.y); 
    }); 
    function addArea() { 
    setTimeout(function() { 
     d3.selectAll("#cust-fill").remove(); 
     d3.selectAll('.nv-group') 
     .each(function(d) { 
      if (d.key === "Another sine wave") { 
      var t = d3.select(this), 
       d = t.datum().values; 
      t.append("path") 
       .attr("id", "cust-fill") 
       .attr("d", area(d)) 
       .style("fill", d.color) 
       .style("opacity", ".3"); 
      } 
     }) 
    }, 100); 
    } 
    nv.dispatch.render_end = addArea; 
    chart.dispatch.stateChange = addArea; 

fiddleを更新しました。

+0

これは最初は機能しますが、一部のシリーズを選択して選択を解除すると機能しなくなります。いくつかの回避策がありますか? – LeoGardel

+0

@LeoGardel、上記の編集を参照してください。 – Mark

+0

うわー!ほぼ完璧に動作します。私はそれを使用するつもりです。ありがとう! – LeoGardel

関連する問題