List of usage examples for org.jfree.chart.renderer.xy XYErrorRenderer XYErrorRenderer
public XYErrorRenderer()
XYErrorRenderer
instance. From source file:projects.wdlf47tuc.ProcessAllSwathcal.java
/** * Computes the luminosity function for the current boxed region and plots it in a JFrame. * Also prints out the coordinates of the selection box vertices and the luminosity function * quantities./*from ww w . j a v a 2 s . co m*/ * * @param sources * The {@link Source}s to compute the luminosity function for. */ private void computeAndPlotLuminosityFunction(List<Source> sources) { // Print out coordinates of selection box corners System.out.println("# Coordinates of selection box corners:"); System.out.println("# (" + col1Filter + "-" + col2Filter + ")\t" + magFilter); for (double[] point : points) { System.out.println("# " + point[0] + "\t" + point[1]); } System.out.println("# Luminosity function:"); System.out.println("# Mag.\tN\tsigN"); double magBinWidth = 0.5; // Get the range of the data double mMin = Double.MAX_VALUE; double mMax = -Double.MAX_VALUE; for (Source source : sources) { double mag = source.getMag(magFilter) - mu; mMin = Math.min(mMin, mag); mMax = Math.max(mMax, mag); } // Quantize this to a whole number mMin = Math.floor(mMin); mMax = Math.ceil(mMax); int nBins = (int) Math.rint((mMax - mMin) / magBinWidth); // Array to accumulate all objects in each bin int[] n = new int[nBins]; for (Source source : sources) { double mag = source.getMag(magFilter) - mu; // Bin number int bin = (int) Math.floor((mag - mMin) / magBinWidth); n[bin]++; } YIntervalSeries luminosityFunction = new YIntervalSeries("Luminosity Function"); for (int i = 0; i < nBins; i++) { // Bin centre double x = mMin + i * magBinWidth + 0.5 * magBinWidth; double y = n[i]; double yErr = n[i] > 0 ? Math.sqrt(y) : 0; luminosityFunction.add(x, y, y - yErr, y + yErr); System.out.println(x + "\t" + y + "\t" + yErr); } final YIntervalSeriesCollection data = new YIntervalSeriesCollection(); data.addSeries(luminosityFunction); XYErrorRenderer renderer = new XYErrorRenderer(); renderer.setSeriesLinesVisible(0, true); renderer.setSeriesShapesVisible(0, true); renderer.setSeriesShape(0, new Ellipse2D.Float(-1f, -1f, 2, 2)); renderer.setSeriesPaint(0, ChartColor.BLACK); NumberAxis xAxis = new NumberAxis("Absolute Magnitude (" + magFilter.toString() + ")"); xAxis.setAutoRange(true); xAxis.setAutoRangeIncludesZero(false); NumberAxis yAxis = new NumberAxis("N"); yAxis.setAutoRange(true); yAxis.setAutoRangeIncludesZero(true); // Configure plot XYPlot xyplot = new XYPlot(data, xAxis, yAxis, renderer); xyplot.setBackgroundPaint(Color.lightGray); xyplot.setDomainGridlinePaint(Color.white); xyplot.setDomainGridlinesVisible(true); xyplot.setRangeGridlinePaint(Color.white); // Configure chart JFreeChart chart = new JFreeChart("Luminosity Function", xyplot); chart.setBackgroundPaint(Color.white); chart.setTitle("47 Tuc luminosity function"); chart.removeLegend(); final ChartPanel lfChartPanel = new ChartPanel(chart); java.awt.EventQueue.invokeLater(new Runnable() { @Override public void run() { JFrame tester = new JFrame(); tester.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); tester.setLayout(new BorderLayout()); tester.add(lfChartPanel, BorderLayout.CENTER); tester.pack(); tester.setVisible(true); } }); }
From source file:jhplot.HChart.java
/** * Draw data from a P1D. Drawing updated automatically. 1st level errors are * shown if the dimension is above 5. Otherwise show X and Y. If you set * setChartPolar() before,m you can also show polar coordinates. * /*from w ww. j a v a 2 s . c o m*/ * @param d * input P1D container */ public void add(P1D d) { if (cdatPolar[N1][N2] != null) { XYSeries SerData = new XYSeries(d.getTitle()); for (int i = 0; i < d.size(); i++) SerData.add(d.getX(i), d.getY(i)); cdatPolar[N1][N2].addSeries(SerData); return; // return if this is polar chart } // assume XY chart // System.out.println(d.dimension()); LinePars lpp = d.getDrawOption(); float width = (float) lpp.getPenWidth(); int style = d.getLineStyle(); float dash = lpp.getDashLength(); int symbol = lpp.getSymbol(); Shape shape = getShape(symbol, lpp.getSymbolSize()); // setSeriesShapesFilled(int series, java.lang.Boolean flag) // setShapesFilled(boolean filled) if (d.dimension() > 5) { XYIntervalSeriesCollection c = new XYIntervalSeriesCollection(); XYIntervalSeries SerData = new XYIntervalSeries(d.getTitle()); for (int i = 0; i < d.size(); i++) SerData.add(d.getX(i), d.getX(i) - d.getXleft(i), d.getX(i) + d.getXright(i), d.getY(i), d.getY(i) - d.getYlower(i), d.getY(i) + d.getYupper(i)); c.addSeries(SerData); xyplot[N1][N2].setDataset(indexdat[N1][N2], c); XYErrorRenderer xyerrorrenderer = new XYErrorRenderer(); xyerrorrenderer.setSeriesStroke(0, getStrokes(style, width, dash)); xyerrorrenderer.setSeriesPaint(0, d.getColor()); xyerrorrenderer.setSeriesOutlinePaint(0, d.getColor()); xyerrorrenderer.setSeriesFillPaint(0, lpp.getFillColor()); xyerrorrenderer.setSeriesShape(0, shape); if (symbol > 0 && symbol < 4) xyerrorrenderer.setSeriesShapesFilled(0, false); if (symbol > 3) xyerrorrenderer.setSeriesShapesFilled(0, true); rdat[N1][N2].add(xyerrorrenderer); type[N1][N2].put(new Integer(indexdat[N1][N2]), "pe"); indexdat[N1][N2]++; } else if (d.dimension() == 4) { XYIntervalSeriesCollection c = new XYIntervalSeriesCollection(); XYIntervalSeries SerData = new XYIntervalSeries(d.getTitle()); for (int i = 0; i < d.size(); i++) SerData.add(d.getX(i), d.getX(i), d.getX(i), d.getY(i), d.getY(i) - d.getYlower(i), d.getY(i) + d.getYupper(i)); c.addSeries(SerData); xyplot[N1][N2].setDataset(indexdat[N1][N2], c); XYErrorRenderer xyerrorrenderer = new XYErrorRenderer(); xyerrorrenderer.setSeriesStroke(0, getStrokes(style, width, dash)); xyerrorrenderer.setSeriesPaint(0, d.getColor()); xyerrorrenderer.setSeriesOutlinePaint(0, d.getColor()); xyerrorrenderer.setSeriesFillPaint(0, lpp.getFillColor()); xyerrorrenderer.setSeriesShape(0, shape); if (symbol > 0 && symbol < 4) xyerrorrenderer.setSeriesShapesFilled(0, false); if (symbol > 3) xyerrorrenderer.setSeriesShapesFilled(0, true); rdat[N1][N2].add(xyerrorrenderer); type[N1][N2].put(new Integer(indexdat[N1][N2]), "pe"); indexdat[N1][N2]++; } else if (d.dimension() == 3) { XYIntervalSeriesCollection c = new XYIntervalSeriesCollection(); XYIntervalSeries SerData = new XYIntervalSeries(d.getTitle()); for (int i = 0; i < d.size(); i++) SerData.add(d.getX(i), d.getX(i), d.getX(i), d.getY(i), d.getY(i) - d.getYupper(i), d.getY(i) + d.getYupper(i)); c.addSeries(SerData); xyplot[N1][N2].setDataset(indexdat[N1][N2], c); XYErrorRenderer xyerrorrenderer = new XYErrorRenderer(); xyerrorrenderer.setSeriesStroke(0, getStrokes(style, width, dash)); xyerrorrenderer.setSeriesPaint(0, d.getColor()); xyerrorrenderer.setSeriesOutlinePaint(0, d.getColor()); xyerrorrenderer.setSeriesFillPaint(0, lpp.getFillColor()); xyerrorrenderer.setSeriesShape(0, shape); if (symbol > 0 && symbol < 4) xyerrorrenderer.setSeriesShapesFilled(0, false); if (symbol > 3) xyerrorrenderer.setSeriesShapesFilled(0, true); rdat[N1][N2].add(xyerrorrenderer); type[N1][N2].put(new Integer(indexdat[N1][N2]), "pe"); indexdat[N1][N2]++; } else { XYSeriesCollection c = new XYSeriesCollection(); XYSeries SerData = new XYSeries(d.getTitle()); for (int i = 0; i < d.size(); i++) SerData.add(d.getX(i), d.getY(i)); c.addSeries(SerData); xyplot[N1][N2].setDataset(indexdat[N1][N2], c); XYLineAndShapeRenderer xyerrorrenderer = new XYLineAndShapeRenderer(false, true); xyerrorrenderer.setSeriesStroke(0, getStrokes(style, width, dash)); xyerrorrenderer.setSeriesPaint(0, d.getColor()); xyerrorrenderer.setSeriesOutlinePaint(0, d.getColor()); xyerrorrenderer.setSeriesFillPaint(0, lpp.getFillColor()); xyerrorrenderer.setSeriesShape(0, shape); if (symbol > 0 && symbol < 4) xyerrorrenderer.setSeriesShapesFilled(0, false); if (symbol > 3) xyerrorrenderer.setSeriesShapesFilled(0, true); rdat[N1][N2].add(xyerrorrenderer); type[N1][N2].put(new Integer(indexdat[N1][N2]), "p"); indexdat[N1][N2]++; } }