public void drawChart(String filename, int width, int height) throws IOException { // Create plot NumberAxis xAxis = new NumberAxis(xAxisLabel); NumberAxis yAxis = new NumberAxis(yAxisLabel); XYSplineRenderer renderer = new XYSplineRenderer(); XYPlot plot = new XYPlot(dataset, xAxis, yAxis, renderer); plot.setBackgroundPaint(Color.lightGray); plot.setDomainGridlinePaint(Color.white); plot.setRangeGridlinePaint(Color.white); plot.setAxisOffset(new RectangleInsets(4, 4, 4, 4)); // Create chart JFreeChart chart = new JFreeChart(chartTitle, JFreeChart.DEFAULT_TITLE_FONT, plot, true); ChartUtilities.applyCurrentTheme(chart); ChartPanel chartPanel = new ChartPanel(chart, false); // Draw png BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_INT_BGR); Graphics graphics = bi.getGraphics(); chartPanel.setBounds(0, 0, width, height); chartPanel.paint(graphics); ImageIO.write(bi, "png", new File(filename)); }
public void drawChart(String filename, int width, int height) throws IOException { // Create plot NumberAxis xAxis = new NumberAxis(xAxisLabel); NumberAxis yAxis = new NumberAxis(yAxisLabel); XYSplineRenderer renderer = new XYSplineRenderer(); XYPlot plot = new XYPlot(dataset, xAxis, yAxis, renderer); plot.setBackgroundPaint(Color.lightGray); plot.setDomainGridlinePaint(Color.white); plot.setRangeGridlinePaint(Color.white); plot.setAxisOffset(new RectangleInsets(4, 4, 4, 4)); // Create chart JFreeChart chart = new JFreeChart(chartTitle, JFreeChart.DEFAULT_TITLE_FONT, plot, true); ChartUtilities.applyCurrentTheme(chart); ChartPanel chartPanel = new ChartPanel(chart, false); // Draw png BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_INT_BGR); Graphics graphics = bi.getGraphics(); chartPanel.setBounds(0, 0, width, height); chartPanel.paint(graphics); ImageIO.write(bi, "png", new File(filename)); }
@Override public void write(OutputStream aStream) throws IOException { JFreeChart chart = ChartFactory.createXYLineChart(null, "Recall", "Precision", dataset, PlotOrientation.VERTICAL, false, false, false); chart.getXYPlot().setRenderer(new XYSplineRenderer()); chart.getXYPlot().getRangeAxis().setRange(0.0, 1.0); chart.getXYPlot().getDomainAxis().setRange(0.0, 1.0); ChartUtil.writeChartAsSVG(aStream, chart, 400, 400); } }
private static JFreeChart plotChart(List<ExtendedResult> results) { double[][] dataFScore = new double[2][results.size()]; double[][] dataPrecision = new double[2][results.size()]; double[][] dataRecall = new double[2][results.size()]; for (int i = 0; i < results.size(); i++) { ExtendedResult r = results.get(i); dataFScore[0][i] = r.getIterationNumber(); dataFScore[1][i] = r.getFscore(); dataPrecision[0][i] = r.getIterationNumber(); dataPrecision[1][i] = r.getPrecision(); dataRecall[0][i] = r.getIterationNumber(); dataRecall[1][i] = r.getRecall(); } DefaultXYDataset dataset = new DefaultXYDataset(); dataset.addSeries("F-Score", dataFScore); dataset.addSeries("Precision", dataPrecision); dataset.addSeries("Recall", dataRecall); JFreeChart chart = ChartFactory.createXYLineChart(null, "Increment #", "Value", dataset, PlotOrientation.VERTICAL, true, false, false); chart.getXYPlot().setRenderer(new XYSplineRenderer()); chart.getXYPlot().getRangeAxis().setRange(0, 1.0); NumberAxis xAxis = new NumberAxis(); xAxis.setTickUnit(new NumberTickUnit(1)); xAxis.setAutoRange(true); xAxis.setAutoRangeIncludesZero(false); xAxis.setTickUnit(new NumberTickUnit(1)); chart.getXYPlot().setDomainAxis(xAxis); return chart; }