public static void createROC(ClassifierOutput classifierOutput, String filename) { WriteTextFile out = null; if (outputROCcsv) { out = new WriteTextFile(filename.replace(".gif", ".csv")); out.writeln("FPR,TPR"); } BufferedImage img = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); Graphics2D g2d = (Graphics2D) img.getGraphics(); g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g2d.setColor(Color.WHITE); g2d.fillRect(0, 0, width, height); renderAxes(g2d, 0.2f, 1f); // renderDiagonal(g2d); renderROC(g2d, classifierOutput, out); if (includeAuCinROC) { double auc = ClassifierEvaluator.areaUnderCurveConfidenceInterval(classifierOutput).pointEstimate; g2d.setColor(Color.black); g2d.setFont(new Font("Arial", Font.PLAIN, 50)); FontMetrics metrics = g2d.getFontMetrics(); String text = "AUC = " + StringUtilities.formatNumber("0.00", auc); int textWidth = metrics.stringWidth(text); int textHeight = metrics.getHeight(); g2d.drawString( text, Math.round(width - textWidth - borderWidth), Math.round(height - textHeight) + 7); } try { ImageIO.write(img, "GIF", new File(filename)); } catch (IOException e) { e.printStackTrace(); } if (out != null) out.close(); }