2013-02-12 12 views
5

私のアプリケーションでd3.jsグラフを使用しています。 はここで、彼らが(画像の中に見える)マネーチャート上のY軸についてChartsdiscreteBarChart上でyaxisのドメインとスケールを設定する方法nvd3.js

を参照してください この画像にある、私は最大値は400に丸めたい、どんな最大バーのサイズは、ここではそれが$ 358.72ではありませんが、私が欲しいです棒を358.72に保つが、Y軸には400 Limitがある。そのため

コードは

tradesChart = [ 
     { 
     key: "Cumulative Return", 
     values: [ 
         { 
      "label" : "6E", 
      "value" : 100  }, 
        { 
      "label" : "NG", 
      "value" : 100  }, 
        { 
      "label" : "TF", 
      "value" : 67  }  ] 
     } 
    ]; 
     nv.addGraph(function() { 

     var chart = nv.models.discreteBarChart() 
      .x(function(d) { return d.label }) 
      .y(function(d) { return d.value/100 }) 
      .staggerLabels(true) 
      .showValues(true) 
      .valueFormat(d3.format('.0%')) 

     chart.yAxis.tickFormat(function(d) { return d3.format('d')(d*100) + '%'; }); 

     d3.select('#chart-trades svg') 
     .datum(tradesChart) 
     .transition().duration(500) 
     .call(chart); 

     nv.utils.windowResize(chart.update); 

     return chart; 
    }); 

が親切にあなたがY軸スケールのドメインを変更する必要が

答えて

13

をこれを解決するために私を助けここにあります。通常、それは次のような文でデータの最大値から導出されます。また

yScale.domain([0, 400]); 

、もし:

yScale.domain([0, d3.max(data, function (d) { return d.v; }) ]); 

あなたのケースでは、あなたはより多くの代わりに、このようになり、それを変更する必要がありますあなたは、次のような何かを行うことができ、データまたはから最小静的な値を最大値に設定したい:

yScale.domain([0, d3.max(data, function (d) { return d.v > 400 ? d.v : 400; }) ]); 

府例jsfiddleはhereです。

これはD3.jsで行う方法ですが、私は由緒あるnvd3.jsライブラリに慣れていないので、スケールへのアクセス方法はわかりませんが、それを見つけることができます。 Yスケールに強制する数の

+0

おかげで、私は動的にこれを使用して範囲を設定することができますどのように1以上quetion、私はすでにこの 'd3.maxを試してみました。 –

+0

d3.maxはデータの最大値を設定するために働きますが、実際のデータの最大値を使用したい場合は*または*を使用してください(データ、関数(d){return dv;})静的な値(例えば400)は、次のようにして実行できます。 yScale.domain([0、d3.max(data、function(d){return dv> 400?dv:400;})]); 私は表示するようにフィドルを更新しましたこの技術はhttp://jsfiddle.net/activescott/69cwn/32/です –

関連する問題