2011-08-04 18 views
5

में ऑटो-स्केल वाई-एक्सिस मैं अपने जावा ऐप में कैंडलस्टिक चार्ट बनाने के लिए JFreeChart का उपयोग कर रहा हूं। हालांकि, मेरे चार्ट अंत इस तरह लग रही:JfreeChart

capturebhx http://imageshack.us/photo/my-images/69/capturebhx.png/

मैं इतना है कि चार्ट अधिक इस तरह दिखता है Y- अक्ष स्वचालित रूप से बढ़ाया करना चाहते हैं:

capture2wl http://imageshack.us/photo/my-images/717/capture2wl.png/

मुझे लगता है कि org.jfree.chart.axis.NumberAxis.configure() ऐसा करेगा, लेकिन मुझे यकीन नहीं है। मुझे JFreeChart ऑब्जेक्ट, या ChartPanel ऑब्जेक्ट को NumberAxis ऑब्जेक्ट में जोड़ने का कोई तरीका नहीं दिख रहा है। कृपया मेरी मदद करें, मैं खो गया हूं और इन ऑब्जेक्ट्स को एक साथ जोड़ने और टाई करने के लिए काफी समय लगा रहा हूं। या, यदि आप एक और रास्ता खोज सकते हैं, तो यह भी बहुत अच्छा होगा!

कुछ कोड:

... 
private DefaultHighLowDataset dataset; 
private JFreeChart chart; 
private ChartPanel chart_panel; 

... 

// creates dataset, then chart from dataset, then chart_panel from chart 
dataset = new DefaultHighLowDataset("", date, high, low, open, close, volume); 
chart = ChartFactory.createCandlestickChart("Blank", "Time", "Price", dataset, false); 
chart_panel = new ChartPanel(chart); // what you see in the images 
... 
+1

कुछ कोड स्निपेट मदद कर सकते हैं। –

उत्तर

6

setAutoRangeIncludesZero(false) करना सुनिश्चित करें अन्यथा "अक्ष रेंज ... शून्य शामिल करने के लिए मजबूर किया जाता है।"

परिशिष्ट:

मैं अभी भी एक ChartPanel वस्तु या JFreeChart ऑब्जेक्ट में एक NumberAxis वस्तु लिंक करने का तरीका पता नहीं है।

आप org.jfree.chart.demo और here में उदाहरणों को देखना चाहते हैं। यदि यह टेरा incognita है, तो मैं The JFreeChart Developer Guide की अनुशंसा करता हूं।

अस्वीकरण: ऑब्जेक्ट रिफाइनरी लिमिटेड से संबद्ध नहीं; सिर्फ एक संतुष्ट ग्राहक और बहुत मामूली योगदानकर्ता।

+0

यह भी ऐसा कर सकता है, लेकिन मुझे अभी भी पता नहीं है कि किसी संख्याएक्स ऑब्जेक्ट को चार्टपेल ऑब्जेक्ट या JFreeChart ऑब्जेक्ट से कैसे लिंक करें। – supercoder

+0

मैंने ऊपर विस्तारित किया है। यदि आपको अभी भी समस्या हो रही है, तो [sscce] (http://sscce.org/) पोस्ट करें जो आपकी [छवि] (http://imageshack.us/photo/my-images/69/capturebhx.png /)। – trashgod

+0

मुझे भी एक ही समस्या है लेकिन मैं एंड्रॉइड के लिए afreechart लाइब्रेरी का उपयोग कर रहा हूँ। और यह कोड मेरे लिए काम नहीं करता है। – arjunkn

4

मैं इसे इस तरह से किया था:

 final JFreeChart chart = ChartFactory.createCandlestickChart(
      "Candlestick Demo", "Time", "Price", dataset, false); 

    double lowestLow = getLowestLow(dataset); 
    double highestHigh = getHighestHigh(dataset); 

    chart.getXYPlot().getRangeAxis().setRange(lowestLow*0.95, highestHigh*1.05); 

मैं इन कार्यों

private double getLowestLow(DefaultHighLowDataset dataset){ 
    double lowest; 
    lowest = dataset.getLowValue(0,0); 
    for(int i=1;i<dataset.getItemCount(0);i++){ 
     if(dataset.getLowValue(0,i) < lowest){ 
      lowest = dataset.getLowValue(0,i); 
     } 
    } 

    return lowest; 
} 


private double getHighestHigh(DefaultHighLowDataset dataset){ 
    double highest; 
    highest = dataset.getHighValue(0,0); 
    for(int i=1;i<dataset.getItemCount(0);i++){ 
     if(dataset.getLowValue(0,i) > highest){ 
      highest = dataset.getHighValue(0,i); 
     } 
    } 

    return highest; 
} 

यह मैं एक बहुत अच्छा कैंडलस्टिक चार्ट कि अच्छा बनाता देने के लिए लगता है का उपयोग करते हुए सबसे कम कम और सबसे कम उच्च गणना वाई-अक्ष रेंज का उपयोग। उम्मीद है की यह मदद करेगा।

संबंधित मुद्दे