2011-08-04 32 views
5

Java uygulamamda şamdan grafikleri oluşturmak için JFreeChart kullanıyorum. Ancak, grafiklerim bu benzeyen sonunda:JfreeChart içinde Otomatik Ölçek Y Ekseni

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

Ben grafik birden şöyle ki Y ekseni otomatik ölçekli istiyorum:

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

Sanırım org.jfree.chart.axis.NumberAxis.configure() bunu yapacak, ama emin değilim. JFreeChart nesnesini veya ChartPanel nesnesini bu NumberAxis nesnesine bağlamak için bir yol bulamıyorum. Lütfen bana yardım edin, kayboldum ve bu nesneleri bir araya getirmek için uzun zamandır arıyordum. Ya da başka bir yol bulabilirseniz, bu da harika olur!

Bazı kod:

... 
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

Bazı kod parçacıkları yardımcı olabilir. –

cevap

6

setAutoRangeIncludesZero(false) emin olun veya "eksen aralığı ... sıfır dahil etmek zorunda kalır."

Zeyilname:

Hala ChartPanel nesneye veya JFreeChart nesneye bir NumberAxis nesneyi bağlamak bilmiyorum.

Sen org.jfree.chart.demo ve here örneklere bakmak isteyebilirsiniz. Bu terra incognita ise, The JFreeChart Developer Guide'u öneririm.

Yasal Uyarı: Object Refinery Limited ile ilişkisi yoktur; sadece memnun bir müşteri ve çok küçük bir katkı.

+0

Bu da yapabilir, ancak hala bir NumberAxis nesnesini bir ChartPanel nesnesine veya JFreeChart nesnesine nasıl bağlayacağımı bilmiyorum. – supercoder

+0

Yukarıda detaylandırdım. Hala sorun yaşıyorsanız, [image] 'i oluşturmak için kullanılan [sscce]' i (http://sscce.org/) gönderin (http://imageshack.us/photo/my-images/69/capturebhx.png /). – trashgod

+0

bende de aynı sorun var ama android için afreechart kütüphanesi kullanıyorum. ve bu kod benim için çalışmıyor. – arjunkn

4

böyle yaptım:

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

Ben Bu bana iyi yapan çok güzel bir mum grafiği vermek görünüyor bu işlevleri

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

kullanarak düşük düşük ve en düşük en yüksek hesaplamak Y ekseni aralığının kullanımı. Bu yardımcı olur umarım.

İlgili konular