@Override protected void setChart() { SeriesManager<Double, Double> sf = new SeriesManager<Double, Double>(intermediateData); List<DataSeries<Double, Double>> seriesList = sf.getSeries(); DataSeries<Double, Double> series = seriesList.get(0); List<SeriesPair<Double, Double>> values = series.getSeriesValues(Double.class, Double.class); XYSeries deltaMassSeries = new XYSeries(series.getIdentifier()); for (SeriesPair<Double, Double> value : values) { deltaMassSeries.add(value.getX(), value.getY()); } XYSeriesCollection dataset = new XYSeriesCollection(); dataset.addSeries(deltaMassSeries); chart = ChartFactory.createXYLineChart( getChartTitle(), // chart title "Experimental m/z - Theoretical m/z", // x axis label "Relative Frequency", // y axis label dataset, // chartData PlotOrientation.VERTICAL, false, // include legend true, // tooltips false // urls ); chart.addSubtitle(new TextTitle(getChartSubTitle())); XYPlot plot = chart.getXYPlot(); plot.setDomainZeroBaselineVisible(true); plot.setBackgroundAlpha(0f); plot.setDomainGridlinePaint(Color.red); plot.setRangeGridlinePaint(Color.blue); }
private DataSeries<Integer, Integer> getAllSpectraSeries( List<DataSeries<Integer, Integer>> seriesList) { List<Integer> keys = new ArrayList<Integer>(); Map<Integer, Integer> map = new HashMap<Integer, Integer>(); for (DataSeries<Integer, Integer> series : seriesList) { for (SeriesPair<Integer, Integer> sp : series.getSeriesValues(Integer.class, Integer.class)) { Integer key = sp.getX(); Integer value = map.containsKey(key) ? map.get(key) + sp.getY() : sp.getY(); if (!keys.contains(key)) keys.add(key); map.put(key, value); } } List<SeriesPair<Integer, Integer>> seriesPairs = new ArrayList<SeriesPair<Integer, Integer>>(); for (Integer key : keys) { Integer value = map.get(key); SeriesPair<Integer, Integer> seriesPair = new SeriesPair<Integer, Integer>(key, value); seriesPairs.add(seriesPair); } return new DataSeries<Integer, Integer>( DataSeriesType.ALL_SPECTRA, DataSeriesType.ALL_SPECTRA.getType(), seriesPairs); }
@Override protected void setChart() { SeriesManager<Integer, Integer> sf = new SeriesManager<Integer, Integer>(intermediateData); List<DataSeries<Integer, Integer>> seriesList = sf.getSeries(); // Adds the 'All Spectra' series at the end in the local variable 'seriesList' // **NOTE** The intermediateData is NOT modified seriesList.add(getAllSpectraSeries(seriesList)); List<Color> seriesColor = new ArrayList<Color>(); DefaultCategoryDataset dataset = new DefaultCategoryDataset(); for (DataSeries<Integer, Integer> series : seriesList) { DataSeriesType seriesType = series.getType(); if (!visibleTypes.contains(seriesType)) continue; String serieKey = series.getIdentifier(); List<SeriesPair<Integer, Integer>> values = series.getSeriesValues(Integer.class, Integer.class); Map<String, Integer> map = new HashMap<String, Integer>(); // The map is filled with the intermediate data values int greaterThanTopValue = 0; for (SeriesPair<Integer, Integer> value : values) { int xValue = value.getX(); int yValue = value.getY(); if (xValue > TOP_VALUE) { greaterThanTopValue += yValue; } else { map.put("" + xValue, yValue); } } // Finally the JFreeChart data object is created and filled with the processed data // DefaultKeyedValues data = new DefaultKeyedValues(); for (int i = 1; i <= TOP_VALUE; i++) { String category = "" + i; int value = map.containsKey(category) ? map.get(category) : 0; dataset.addValue(value, serieKey, category); } dataset.addValue(greaterThanTopValue, serieKey, GT_TOP_VALUE_KEY); seriesColor.add(seriesType.getColor()); } chart = ChartFactory.createBarChart( getChartTitle(), // chart title "Precursor Ion Charge", // x axis label "Frequency", // y axis label dataset, // chartData PlotOrientation.VERTICAL, true, // include legend true, // tooltips false // urls ); chart.addSubtitle(new TextTitle()); CategoryPlot plot = (CategoryPlot) chart.getPlot(); BarRenderer renderer = (BarRenderer) plot.getRenderer(); renderer.setBaseItemLabelGenerator(new NumberLegendGenerator()); for (int i = 0; i < dataset.getRowCount(); i++) { renderer.setSeriesItemLabelsVisible(i, Boolean.TRUE); renderer.setSeriesPaint(i, seriesColor.get(i)); } plot.getRangeAxis().setUpperMargin(CHART_UPPER_MARGIN); plot.setBackgroundAlpha(0f); plot.setDomainGridlinePaint(Color.red); plot.setRangeGridlinePaint(Color.blue); renderer.setShadowVisible(false); renderer.setDrawBarOutline(false); renderer.setItemMargin(0); }