private void drawGraph( final double[] params, final double[] boxSizes, final double[] boxCountSums) { final int samples = 100; final float[] px = new float[samples]; final float[] py = new float[samples]; double[] a = Tools.getMinMax(boxSizes); final double xmin = a[0], xmax = a[1]; a = Tools.getMinMax(boxCountSums); double ymin = a[0], ymax = a[1]; final double inc = (xmax - xmin) / ((double) samples - 1); double tmp = xmin; for (int i = 0; i < samples; i++) { px[i] = (float) tmp; tmp += inc; } for (int i = 0; i < samples; i++) { py[i] = (float) CurveFitter.f(CurveFitter.STRAIGHT_LINE, params, px[i]); } a = Tools.getMinMax(py); ymin = Math.min(ymin, a[0]); ymax = Math.max(ymax, a[1]); final Plot plot = new Plot("Plot", "-log(box size)", "log(box count)", px, py); plot.setLimits(xmin, xmax * 0.9, ymin, ymax * 1.1); plot.draw(); plot.addPoints(boxSizes, boxCountSums, Plot.CIRCLE); plot.addPoints(px, py, Plot.LINE); final CurveFitter cf = new CurveFitter(boxSizes, boxCountSums); cf.doFit(CurveFitter.STRAIGHT_LINE); plot.addLabel( 0.1, 0.1, "Slope: " + IJ.d2s(params[1], 4) + "\n" + "R²: " + IJ.d2s(cf.getRSquared(), 4)); final ImagePlus plotImage = new ImagePlus("Plot", plot.getProcessor()); plotImage.show(); return; }