/** * Displays an horizontally combined XYPlot with X and Y symbolic data. * * @param frameTitle the frame title. * @param data1 the dataset 1. * @param data2 the dataset 2. */ private static void displayXYSymbolicCombinedHorizontally( String frameTitle, XYDataset data1, XYDataset data2) { String title = "Pollutant Horizontally Combined"; String x1AxisLabel = "Contamination"; String x2AxisLabel = "Type"; String yAxisLabel = "Pollutant"; // combine the y symbolic values of the two data sets String[] combinedYSymbolicValues = SampleXYSymbolicDataset.combineYSymbolicDataset((YisSymbolic) data1, (YisSymbolic) data2); // make master dataset... CombinedDataset data = new CombinedDataset(); data.add(data1); data.add(data2); // decompose data... XYDataset series0 = new SubSeriesDataset(data, 0); XYDataset series1 = new SubSeriesDataset(data, 1); JFreeChart chart = null; // common horizontal and vertical axes SymbolicAxis hsymbolicAxis0 = new SymbolicAxis(x1AxisLabel, ((XisSymbolic) data1).getXSymbolicValues()); SymbolicAxis hsymbolicAxis1 = new SymbolicAxis(x2AxisLabel, ((XisSymbolic) data2).getXSymbolicValues()); SymbolicAxis symbolicAxis = new SymbolicAxis(yAxisLabel, combinedYSymbolicValues); // create main plot... CombinedRangeXYPlot mainPlot = new CombinedRangeXYPlot(symbolicAxis); // add subplots... XYItemRenderer renderer = new StandardXYItemRenderer(StandardXYItemRenderer.SHAPES, null); XYPlot subplot0 = new XYPlot(series0, hsymbolicAxis0, null, renderer); XYPlot subplot1 = new XYPlot(series1, hsymbolicAxis1, null, renderer); mainPlot.add(subplot0, 1); mainPlot.add(subplot1, 1); // make the top level JFreeChart object chart = new JFreeChart(title, JFreeChart.DEFAULT_TITLE_FONT, mainPlot, true); chart.setBackgroundPaint(new GradientPaint(0, 0, Color.white, 0, 1000, Color.blue)); // and present it in a frame... JFrame frame = new ChartFrame(frameTitle, chart); frame.pack(); RefineryUtilities.positionFrameRandomly(frame); frame.show(); }
/** * Displays an overlaid XYPlot with X and Y symbolic data. * * @param frameTitle the frame title. * @param data1 the dataset 1. * @param data2 the dataset 2. */ private static void displayXYSymbolicOverlaid( String frameTitle, XYDataset data1, XYDataset data2) { String title = "Pollutant Overlaid"; String xAxisLabel = "Contamination and Type"; String yAxisLabel = "Pollutant"; // combine the x symbolic values of the two data sets String[] combinedXSymbolicValues = SampleXYSymbolicDataset.combineXSymbolicDataset((XisSymbolic) data1, (XisSymbolic) data2); // combine the y symbolic values of the two data sets String[] combinedYSymbolicValues = SampleXYSymbolicDataset.combineYSymbolicDataset((YisSymbolic) data1, (YisSymbolic) data2); // make master dataset... CombinedDataset data = new CombinedDataset(); data.add(data1); data.add(data2); // decompose data... XYDataset series0 = new SubSeriesDataset(data, 0); XYDataset series1 = new SubSeriesDataset(data, 1); // create overlaid plot... SymbolicAxis hsymbolicAxis = new SymbolicAxis(xAxisLabel, combinedXSymbolicValues); SymbolicAxis vsymbolicAxis = new SymbolicAxis(yAxisLabel, combinedYSymbolicValues); XYItemRenderer renderer1 = new StandardXYItemRenderer(StandardXYItemRenderer.SHAPES, null); XYPlot plot = new XYPlot(series0, hsymbolicAxis, vsymbolicAxis, renderer1); XYItemRenderer renderer2 = new StandardXYItemRenderer(StandardXYItemRenderer.SHAPES, null); plot.setSecondaryDataset(0, series1); plot.setSecondaryRenderer(0, renderer2); // make the chart... JFreeChart chart = new JFreeChart(title, JFreeChart.DEFAULT_TITLE_FONT, plot, true); chart.setBackgroundPaint(new GradientPaint(0, 0, Color.white, 0, 1000, Color.blue)); // and present it in a frame... JFrame frame = new ChartFrame(frameTitle, chart); frame.pack(); RefineryUtilities.positionFrameRandomly(frame); frame.show(); }