2013-02-12 27 views
5

我在其中一個應用程序中使用d3.js圖表​​。 在這裏,他們是在此圖像中 見Charts如何在discreteBarChart的yaxis上設置域和縮放比例nvd3.js

對於Y軸金錢圖表上(在圖片查看),我想吧大小就是最大這裏爲$ 358.72四捨五入爲400,無論最大值,但我想將槓桿限制在358.72,但在Y軸上限制爲400。

代碼它是在這裏

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; 
    }); 

請幫我解決了這一點

回答

13

您需要修改Y軸刻度的領域。通常它從數據的最大值導出用類似下面的語句:

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

在你的情況,你應該修改它更像這個:

yScale.domain([0, 400]); 

另外,如果要從數據最小靜態值設置的最大值,你可以這樣做以下:

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

傅ll example jsfiddle is here

這就是如何與D3.js做到這一點,我不熟悉歷史悠久的nvd3.js庫,所以我不知道如何訪問該規模,但我會看看,看看我是否可以找到它。

+0

由於該工作,但多了一個quetion,如何可以動態地設置使用此範圍我已經嘗試過這個'd3.max (數據,函數(d){return dv;})'但不工作.. – 2013-02-18 11:55:50

+0

d3.max將用於設置數據的最大值。但是,如果要使用實際數據的最大值*或*一個靜態值(例如400),你可以這樣做: yScale.domain([0,d3.max(data,function(d){return dv> 400?dv:400;})]); 我更新了小提琴顯示這項技術在http://jsfiddle.net/activescott/69cwn/32/ – 2013-02-18 22:32:34

相關問題