Problem with StackedXYArea Chart - Please Help!!!

A discussion forum for JFreeChart (a 2D chart library for the Java platform).
Locked
lukkumar
Posts: 17
Joined: Thu Jun 07, 2007 8:10 pm

Problem with StackedXYArea Chart - Please Help!!!

Post by lukkumar » Fri Jun 15, 2007 4:10 pm

Hi,
I was trying a demo application for StackedXYArea Chart and I have observed that
1. there was a white gap of stack between the first and second series and 2. there seems to be a line connecting for the last series and it is visible on the chart.
I want to get rid of above two...

Here's the code

public class StackedXYAreaChartDemo extends ApplicationFrame {

public StackedXYAreaChartDemo(String title) {

super(title);

SimpleDateFormat sdf = new SimpleDateFormat("dd-MMM-yyyy", Locale.UK);
XYSeries series1 = new XYSeries("Series 1", true, false);
XYSeries series2 = new XYSeries("Series 2", true, false);
XYSeries series3 = new XYSeries("Series 3", true, false);
XYSeries series4 = new XYSeries("Series 4", true, false);
try {
series1.add(sdf.parse("01-Aug-2002").getTime(), 101923);
series1.add(sdf.parse("02-Aug-2002").getTime(), 113125);
series1.add(sdf.parse("05-Aug-2002").getTime(), 122148);
series1.add(sdf.parse("06-Aug-2002").getTime(), 117434);
series1.add(sdf.parse("07-Aug-2002").getTime(), 133256);
series1.add(sdf.parse("08-Aug-2002").getTime(), 157654);
series1.add(sdf.parse("09-Aug-2002").getTime(), 195356);
series1.add(sdf.parse("12-Aug-2002").getTime(), 122567);

series2.add(sdf.parse("01-Aug-2002").getTime(), 32355);
series2.add(sdf.parse("02-Aug-2002").getTime(), 28543);
series2.add(sdf.parse("05-Aug-2002").getTime(), 29665);
series2.add(sdf.parse("06-Aug-2002").getTime(), 34567);
series2.add(sdf.parse("07-Aug-2002").getTime(), 32453);
series2.add(sdf.parse("08-Aug-2002").getTime(), 29455);
series2.add(sdf.parse("09-Aug-2002").getTime(), 28558);
series2.add(sdf.parse("12-Aug-2002").getTime(), 31084);

series3.add(sdf.parse("01-Aug-2002").getTime(), 45344);
series3.add(sdf.parse("02-Aug-2002").getTime(), 43222);
series3.add(sdf.parse("05-Aug-2002").getTime(), 44567);
series3.add(sdf.parse("06-Aug-2002").getTime(), 46435);
series3.add(sdf.parse("07-Aug-2002").getTime(), 42538);
series3.add(sdf.parse("08-Aug-2002").getTime(), 39553);
series3.add(sdf.parse("09-Aug-2002").getTime(), 44565);
series3.add(sdf.parse("12-Aug-2002").getTime(), 46548);

series4.add(sdf.parse("01-Aug-2002").getTime(), 55437);
series4.add(sdf.parse("02-Aug-2002").getTime(), 55745);
series4.add(sdf.parse("05-Aug-2002").getTime(), 52523);
series4.add(sdf.parse("06-Aug-2002").getTime(), 48563);
series4.add(sdf.parse("07-Aug-2002").getTime(), 34675);
series4.add(sdf.parse("08-Aug-2002").getTime(), 29455);
series4.add(sdf.parse("09-Aug-2002").getTime(), 43678);
series4.add(sdf.parse("12-Aug-2002").getTime(), 64377);
}
catch (ParseException e) {

e.printStackTrace();
}
DefaultTableXYDataset dataset = new DefaultTableXYDataset();
dataset.addSeries(series1);
dataset.addSeries(series2);
dataset.addSeries(series3);
dataset.addSeries(series4);

JFreeChart chart = createChart(dataset);

ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new java.awt.Dimension(600, 300));
setContentPane(chartPanel);

}


private JFreeChart createChart(TableXYDataset dataset) {

SimpleDateFormat sdf = new SimpleDateFormat("dd-MMM-yyyy", Locale.UK);
StandardXYToolTipGenerator ttg = new StandardXYToolTipGenerator(
StandardXYToolTipGenerator.DEFAULT_TOOL_TIP_FORMAT,
sdf, NumberFormat.getInstance());
DateAxis xAxis = new DateAxis("Domain (X)");
xAxis.setTickMarkPosition(DateTickMarkPosition.START);
xAxis.setVerticalTickLabels(true);
xAxis.setTickUnit(new DateTickUnit(DateTickUnit.DAY, 1));
xAxis.setDateFormatOverride(new SimpleDateFormat("dd-MMM-yy"));
xAxis.setLowerMargin(0.01);
xAxis.setUpperMargin(0.01);

NumberAxis yAxis = new NumberAxis("Range (Y)");
yAxis.setAutoRangeIncludesZero(true);
StackedXYAreaRenderer renderer = new StackedXYAreaRenderer(
XYAreaRenderer.AREA_AND_SHAPES, ttg, null );
renderer.setSeriesPaint(0, new Color(255, 255, 180));
renderer.setSeriesPaint(1, new Color(206, 230, 255));
renderer.setSeriesPaint(2, new Color(255, 230, 230));
renderer.setSeriesPaint(3, new Color(206, 255, 206));
renderer.setShapePaint(Color.gray);
renderer.setShapeStroke(new BasicStroke(0.5f));
renderer.setShape(new Ellipse2D.Double(-3, -3, 6, 6));
renderer.setOutline(true);

XYPlot plot = new XYPlot(dataset, xAxis, yAxis, renderer);
plot.setForegroundAlpha(0.65f);

yAxis.configure();

JFreeChart chart = new JFreeChart(null, JFreeChart.DEFAULT_TITLE_FONT, plot, true);




return chart;
}

public static void main(String[] args) {
StackedXYAreaChartDemo demo = new StackedXYAreaChartDemo("Stacked Area XY Chart Demo");
demo.pack();
RefineryUtilities.centerFrameOnScreen(demo);
demo.setVisible(true);
}

}



Please refer to the code above and see if I have missed any thing.

david.gilbert
JFreeChart Project Leader
Posts: 11734
Joined: Fri Mar 14, 2003 10:29 am
antibot: No, of course not.
Contact:

Post by david.gilbert » Mon Jun 18, 2007 10:17 am

Definitely a bug. Thanks for the report, and especially the demo code. I filed it in the bug tracker so I can come back to it after I finish updating the web site and docs for the 1.0.6 release which just went up:

http://sourceforge.net/tracker/index.ph ... tid=115494
David Gilbert
JFreeChart Project Leader

:idea: Read my blog
:idea: Support JFree via the Github sponsorship program

hontvari
Posts: 3
Joined: Fri Mar 17, 2006 3:34 pm

Post by hontvari » Wed Jul 09, 2008 12:24 am

David Basten submitted a bug report about this problem 3 years ago, which also includes the result of his analysis and maybe two related issues, see his bug report with id 1225830 (I am not allowed to insert a URL here).

Locked