2011-08-04 24 views
5

Tôi đang sử dụng JFreeChart để tạo biểu đồ hình nến trong ứng dụng Java của mình. Tuy nhiên, bảng xếp hạng của tôi kết thúc lên trông như thế này:Trục Y quy mô tự động trong JfreeChart

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

Tôi muốn có trục Y tự động co giãn để biểu đồ trông giống như thế này:

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

Tôi nghĩ rằng org.jfree.chart.axis.NumberAxis.configure() sẽ thực hiện việc này, nhưng tôi không chắc chắn. Tôi dường như không thể tìm cách để gắn đối tượng JFreeChart của mình hoặc đối tượng ChartPanel cho đối tượng NumberAxis này. Xin hãy giúp tôi, tôi đã mất và đã tìm kiếm một thời gian dài để thử và buộc những đồ vật này lại với nhau. Hoặc, nếu bạn có thể tìm thấy một cách khác, điều đó cũng tuyệt vời!

Một số mã:

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

Một số đoạn mã có thể hữu ích. –

Trả lời

6

Hãy chắc chắn để setAutoRangeIncludesZero(false) hoặc "phạm vi trục ... buộc phải bao gồm số không."

Phụ Lục:

tôi vẫn không biết làm thế nào để liên kết một đối tượng NumberAxis đến một đối tượng ChartPanel hoặc JFreeChart đối tượng.

Bạn có thể muốn xem các ví dụ trong org.jfree.chart.demohere. Nếu đây là terra incognita, tôi khuyên bạn nên The JFreeChart Developer Guide.

Tuyên bố từ chối trách nhiệm: Không liên kết với Object Refinery Limited; chỉ là một khách hàng hài lòng và người đóng góp rất nhỏ.

+0

Điều đó có thể làm điều đó quá, nhưng tôi vẫn không biết làm thế nào để liên kết một đối tượng NumberAxis với một đối tượng ChartPanel hoặc đối tượng JFreeChart. – supercoder

+0

Tôi đã xây dựng ở trên. Nếu bạn vẫn gặp sự cố, hãy đăng [sscce] (http://sscce.org/) được sử dụng để tạo [image] của bạn (http://imageshack.us/photo/my-images/69/capturebhx.png /). – trashgod

+0

tôi cũng có cùng một vấn đề nhưng tôi đang sử dụng thư viện afreechart cho android. và mã này không hoạt động cho tôi. – arjunkn

4

tôi đã làm nó như thế này:

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

tôi tính toán cao thấp thấp nhất và thấp nhất sử dụng các chức năng này

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

Điều này dường như cho tôi một biểu đồ nến rất đẹp mà làm cho tốt sử dụng phạm vi trục Y. Hi vọng điêu nay co ich.

Các vấn đề liên quan