2013-02-12 18 views
5

मैं अपने अनुप्रयोगों में से एक में d3.js चार्ट का उपयोग कर रहा हूं। यहाँ वे इस छवि में हैं मनी चार्ट पर Chartsएक डिस्क पर एक yaxis पर डोमेन और स्केल कैसे सेट करें BarChart nvd3.js

Y अक्ष के लिए देखें (छवि में देखें), मैं अधिकतम मूल्य, 400 गोल कोई बात नहीं क्या अधिकतम बार आकार यहाँ है यह $ 358.72 है चाहते हैं, लेकिन मैं चाहता हूँ 358.72 पर बार रखने के लिए लेकिन वाई एक्सिस पर यह 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; }) ]); 

एक फू: आप, आप निम्नलिखित की तरह कुछ कर सकते हैं डेटा या एक न्यूनतम स्थिर मान से अधिकतम मूल्य निर्धारित करना चाहते हैं उदाहरण के लिए jsfiddle here होगा।

यह डी 3.जेएस के साथ ऐसा करने का तरीका है, मैं आदरणीय nvd3.js lib से परिचित नहीं हूं, इसलिए मुझे यकीन नहीं है कि पैमाने का उपयोग कैसे करें, लेकिन मैं एक नज़र डालूंगा और देख सकता हूं कि मैं इसे पा सकते हैं

+0

धन्यवाद कि काम किया, लेकिन एक और quetion, मैं कैसे गतिशील रूप से इस का उपयोग कर श्रेणियां निर्धारित कर सकते हैं मैं पहले से ही इस 'd3.max की कोशिश की (डेटा, फ़ंक्शन (डी) {वापसी डीवी;}) 'लेकिन काम नहीं कर रहा है .. –

+0

d3.max डेटा में अधिकतम मूल्य निर्धारित करने के लिए काम करेगा। हालांकि, यदि आप वास्तविक डेटा का अधिकतम उपयोग करना चाहते हैं * या * एक स्थिर मूल्य (उदाहरण के लिए 400) आप इसे कुछ ऐसा कर सकते हैं जैसे: yScale.domain ([0, d3.max (डेटा, फ़ंक्शन (डी) {वापसी डीवी> 400? डीवी: 400;})]); मैंने दिखाने के लिए पहेली को अपडेट किया http://jsfiddle.net/activescott/69cwn/32/ पर यह तकनीक –

0

फोर्स वाई

संख्या की सूची Y पैमाने (यानी। 0, या एक अधिकतम/मिनट, आदि) में मजबूर करने के लिए। संख्या d3.js मानों को निर्धारित करने के बजाय d3.js के बजाय, पैमाने में उपयोग करने के मानों को बताती है।

डाटाटाइप:। संख्याओं का सरणी (यानी [0, 50]

http://cmaurer.github.io/angularjs-nvd3-directives/line.chart.html