Auto-Scale Y-Axis in JfreeChart

supercoder picture supercoder · Aug 4, 2011 · Viewed 16k times · Source

I am using JFreeChart to create candlestick charts in my Java app. However, my charts end up looking like this:

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

I would like to have the Y-axis automatically scaled so that the chart looks more like this:

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

I think org.jfree.chart.axis.NumberAxis.configure() will do this, but I'm not sure. I can't seem to find a way to tie my JFreeChartobject, or ChartPanel object to this NumberAxis object. Please help me, I am lost and have been looking for a long time to try and tie these objects together. Or, if you can find another way, that'd be great too!

Some code:

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

Answer

trashgod picture trashgod · Aug 4, 2011

Be sure to setAutoRangeIncludesZero(false) or "the axis range…is forced to include zero."

Addendum:

I still don't know how to link a NumberAxis object to a ChartPanel object or JFreeChart object.

You may want to look into the examples in org.jfree.chart.demo and here. If this is terra incognita, I'd recommend The JFreeChart Developer Guide.

Disclaimer: Not affiliated with Object Refinery Limited; just a satisfied customer and very minor contributor.