protected void plotScatterDiagram() { // plot sample as one dimensional scatter plot and Gaussian double xmax = 5.; double xmin = -5.; DatanGraphics.openWorkstation(getClass().getName(), "E3Min_1.ps"); DatanGraphics.setFormat(0., 0.); DatanGraphics.setWindowInComputingCoordinates(xmin, xmax, 0., .5); DatanGraphics.setViewportInWorldCoordinates(-.15, .9, .16, .86); DatanGraphics.setWindowInWorldCoordinates(-.414, 1., 0., 1.); DatanGraphics.setBigClippingWindow(); DatanGraphics.chooseColor(2); DatanGraphics.drawFrame(); DatanGraphics.drawScaleX("y"); DatanGraphics.drawScaleY("f(y)"); DatanGraphics.drawBoundary(); double xpl[] = new double[2]; double ypl[] = new double[2]; // plot scatter diagram DatanGraphics.chooseColor(1); for (int i = 0; i < y.length; i++) { xpl[0] = y[i]; xpl[1] = y[i]; ypl[0] = 0.; ypl[0] = .1; DatanGraphics.drawPolyline(xpl, ypl); } // draw Gaussian corresponding to solution int npl = 100; xpl = new double[npl]; ypl = new double[npl]; double fact = 1. / (Math.sqrt(2. * Math.PI) * x.getElement(1)); double dpl = (xmax - xmin) / (double) (npl - 1); for (int i = 0; i < npl; i++) { xpl[i] = xmin + (double) i * dpl; ypl[i] = fact * Math.exp(-.5 * Math.pow((xpl[i] - x.getElement(0)) / x.getElement(1), 2.)); } DatanGraphics.chooseColor(5); DatanGraphics.drawPolyline(xpl, ypl); // draw caption String sn = "N = " + nny; numForm.setMaximumFractionDigits(3); numForm.setMinimumFractionDigits(3); String sx1 = ", x_1# = " + numForm.format(x.getElement(0)); String sx2 = ", x_2# = " + numForm.format(x.getElement(1)); String sdx1 = ", &D@x_1# = " + numForm.format(Math.sqrt(cx.getElement(0, 0))); String sdx2 = ", &D@x_2# = " + numForm.format(Math.sqrt(cx.getElement(1, 1))); caption = sn + sx1 + sx2 + sdx1 + sdx2; DatanGraphics.setBigClippingWindow(); DatanGraphics.chooseColor(2); DatanGraphics.drawCaption(1., caption); DatanGraphics.closeWorkstation(); }
protected void plotParameterPlane() { double x1 = x.getElement(0); double x2 = x.getElement(1); double dx1 = Math.sqrt(cx.getElement(0, 0)); double dx2 = Math.sqrt(cx.getElement(1, 1)); double rho = (cx.getElement(1, 0)) / (dx1 * dx2); // prepare size of plot double xmin = x1 - 2. * dx1; double xmax = x1 + 2. * dx1; double ymin = x2 - 2. * dx2; double ymax = x2 + 2. * dx2; DatanGraphics.openWorkstation(getClass().getName(), "E3Min_2.ps"); DatanGraphics.setFormat(0., 0.); DatanGraphics.setWindowInComputingCoordinates(xmin, xmax, ymin, ymax); DatanGraphics.setViewportInWorldCoordinates(.2, .9, .16, .86); DatanGraphics.setWindowInWorldCoordinates(-.414, 1., 0., 1.); DatanGraphics.setBigClippingWindow(); DatanGraphics.chooseColor(2); DatanGraphics.drawFrame(); DatanGraphics.drawScaleX("x_1"); DatanGraphics.drawScaleY("x_2"); DatanGraphics.drawBoundary(); DatanGraphics.chooseColor(5); // draw data point with errors (and correlation) DatanGraphics.drawDatapoint(1, 1., x1, x2, dx1, dx2, rho); DatanGraphics.chooseColor(2); DatanGraphics.drawCaption(1., caption); // draw confidence contour double fcont = mllg.getValue(x) + .5; int nx = 100; int ny = 100; double dx = (xmax - xmin) / (int) nx; double dy = (ymax - ymin) / (int) ny; MinLogLikeGaussCont mllgc = new MinLogLikeGaussCont(); // System.out.println(" x = " + x.toString() + ", mllgc.getValue(x) = " + // mllgc.getValue(x.getElement(0), x.getElement(1))); DatanGraphics.setBigClippingWindow(); DatanGraphics.chooseColor(1); DatanGraphics.drawContour(xmin, ymin, dx, dy, nx, ny, fcont, mllgc); // draw asymmetric errors as horiyontal and vertical bars DatanGraphics.chooseColor(3); double[] xpl = new double[2]; double[] ypl = new double[2]; for (int i = 0; i < 2; i++) { if (i == 0) xpl[0] = x1 - dxasy[0][0]; else xpl[0] = x1 + dxasy[0][1]; xpl[1] = xpl[0]; ypl[0] = ymin; ypl[1] = ymax; DatanGraphics.drawPolyline(xpl, ypl); } for (int i = 0; i < 2; i++) { if (i == 0) ypl[0] = x2 - dxasy[1][0]; else ypl[0] = x2 + dxasy[1][1]; ypl[1] = ypl[0]; xpl[0] = xmin; xpl[1] = xmax; DatanGraphics.drawPolyline(xpl, ypl); } DatanGraphics.closeWorkstation(); }