2011-08-04 70 views
5

私はJFreeChartを使用して、Javaアプリケーションで燭台のチャートを作成しています。しかし、私のチャートは、このように見える終わる:JfreeChartの自動スケールY軸

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.demohereの例を参照してください。 terra incognitaの場合は、The JFreeChart Developer Guideをお勧めします。

免責事項:Object Refinery Limitedに所属していません。満足している顧客と非常に小さな貢献者です。

+0

それもそうかもしれませんが、NumberAxisオブジェクトをChartPanelオブジェクトまたはJFreeChartオブジェクトにリンクする方法はまだ分かりません。 – supercoder

+0

私は上記で詳しく述べました。それでも問題が解決しない場合は、[image]の作成に使用した[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; 
} 

を使用して、最低、低、最低高を計算しますY軸の範囲の使用。お役に立てれば。

関連する問題