2013-02-12 14 views
5

Uygulamalarımdan birinde d3.js grafikler kullanıyorum. İşte onlar, ben çubuğu boyutu $ 358,72 burada maksimum ne olursa olsun, 400 yuvarlanır maksimum değeri istiyorsunuz (Image bakınız) Para grafik üzerinde Y ekseni için ChartsDiscreteBarChart nvd3.js üzerinde bir yaxis etki alanı ve ölçek nasıl ayarlanır

Bkz Bu görüntüdeki vardır, ama istiyorum Çubuğu 358.72'de tutmak için ama Y Ekseni üzerinde 400 Limit olacaktır. bunun için

Kod

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

Lütfen Sen Y ekseni ölçek etki alanını değiştirmek gerekir

cevap

13

bunu çözmek için bana yardım burada. Genellikle aşağıdaki gibi bir ifadeye verilerin maksimum değerden elde edilir: eğer

yScale.domain([0, 400]); 

Alternatif olarak: Senin durumunda

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

, daha artık şöyle olması değiştirmek gerekir

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

bir fu: Eğer aşağıdaki gibi bir şey yapabileceğini veri veya minimum statik değer maksimum değere ayarlamak istediğiniz ll örnek jsfiddle here'dur.

D3.js ile nasıl yapılacağı, nera3 nod3.js lib ile aşina değilim, bu yüzden ölçeğe nasıl erişeceğimi bilmiyorum, ancak bir bakacağım bulabilirsin. numaralarının

+0

teşekkürler ama bir daha quetion, ben dinamik bu kullanarak aralıkları ayarlayabilirsiniz nasıl Zaten bu 'd3.max çalıştı (data, function (d) {return dv;}) 'fakat çalışmıyor .. –

+0

d3.max, verilerdeki maksimum değeri ayarlamak için çalışacaktır.Ama, gerçek verinin maksimum değerini kullanmak istiyorsanız * veya * Statik bir değer (örneğin 400) aşağıdaki gibi bir şeyle yapabilirdiniz: yScale.domain ([0, d3.max (data, function (d) {return dv> 400? dv: 400;})]); Göstermek için kemanı güncelledim bu teknik http://jsfiddle.net/activescott/69cwn/32/ adresinde –