Java源码示例:ij.gui.Plot
示例1
public static void plotProfile(RealSignal signal, String name, int x1, int y1, int z1, int x2, int y2, int z2) {
if (signal == null) {
return;
}
double dx = x2 - x1;
double dy = y2 - y1;
double dz = z2 - z1;
double len = Math.sqrt(dx * dx + dy * dy + dz * dz);
int n = (int) Math.round(len * 2);
double ds = len / n;
dx = (double) (x2 - x1) / n;
dy = (double) (y2 - y1) / n;
dz = (double) (z2 - z1) / n;
double value[] = new double[n];
double dist[] = new double[n];
for (int s = 0; s < n; s++) {
double x = x1 + s * dx;
double y = y1 + s * dy;
double z = z1 + s * dz;
dist[s] = s * ds;
value[s] = signal.getInterpolatedPixel(x, y, z);
}
Plot plot = new Plot(name, "distance", "intensity", dist, value);
plot.show();
}
示例2
static public Plot makePlot(final CATAParameters cp, final String name, final VectorString3D c) {
final double[] stdDev = c.getStdDevAtEachPoint();
if (null == stdDev) return null;
final double[] index = new double[stdDev.length];
for (int i=0; i<index.length; i++) index[i] = i;
Utils.log2("name is " + name);
Utils.log2("c is " + c);
Utils.log2("cp is " + cp);
Utils.log2("stdDev is " + stdDev);
Utils.log2("c.getCalibrationCopy() is " + c.getCalibrationCopy());
Utils.log2("c.getDelta() is " + c.getDelta());
final Calibration cal = c.getCalibrationCopy();
if (null == cal) Utils.log2("WARNING null calibration!");
final Plot plot = new Plot(name, name + " -- Point index (delta: " + Utils.cutNumber(c.getDelta(), 2) + " " + (null == cal ? "pixels" : cal.getUnits()) + ")", "Std Dev", index, stdDev);
plot.setLimits(0, cp.plot_max_x, 0, cp.plot_max_y);
plot.setSize(cp.plot_width, cp.plot_height);
plot.setLineWidth(2);
return plot;
}
示例3
protected static void drawSigmaPlots(Plot plot, double[] xVals, SigmaPlotConfig cfg) {
// add points
plot.setColor(cfg.allSigma1sColor);
plot.addPoints(cfg.allFrames, cfg.allSigma1s, Plot.CROSS);
plot.setColor(cfg.allSigma2sColor);
plot.addPoints(cfg.allFrames, cfg.allSigma2s, Plot.CROSS);
// add polynomials
for(int i = 0; i < cfg.allPolynomsS1.size(); i++) {
double[] sigma1Vals = new double[xVals.length];
double[] sigma2Vals = new double[xVals.length];
for(int j = 0; j < sigma1Vals.length; j++) {
sigma1Vals[j] = cfg.allPolynomsS1.get(i).value(xVals[j]);
sigma2Vals[j] = cfg.allPolynomsS2.get(i).value(xVals[j]);
}
plot.setColor(cfg.allPolynomsS1Color);
plot.addPoints(xVals, sigma1Vals, Plot.LINE);
plot.setColor(cfg.allPolynomsS2Color);
plot.addPoints(xVals, sigma2Vals, Plot.LINE);
}
// add final fitted curves
double[] sigma1ValsAll = new double[xVals.length];
double[] sigma2ValsAll = new double[xVals.length];
for(int j = 0; j < sigma1ValsAll.length; j++) {
sigma1ValsAll[j] = cfg.polynomS1Final.value(xVals[j]);
sigma2ValsAll[j] = cfg.polynomS2Final.value(xVals[j]);
}
plot.setColor(cfg.polynomS1FinalColor);
plot.addPoints(xVals, sigma1ValsAll, Plot.LINE);
plot.setColor(cfg.polynomS2FinalColor);
plot.addPoints(xVals, sigma2ValsAll, Plot.LINE);
//legend
plot.setColor(cfg.polynomS1FinalColor);
plot.addLabel(cfg.legend1X, cfg.legend1Y, cfg.legend1Label);
plot.setColor(cfg.polynomS2FinalColor);
plot.addLabel(cfg.legend2X, cfg.legend2Y, cfg.legend2Label);
}
示例4
@Override
public void drawSigmaPlots() {
// config
SigmaPlotConfig cfg = new SigmaPlotConfig();
cfg.allFrames = allFrames;
cfg.allSigma1s = allSigma1s;
cfg.allSigma2s = allSigma2s;
cfg.allPolynomsS1 = allPolynomsS1;
cfg.allPolynomsS2 = allPolynomsS2;
cfg.polynomS1Final = polynomS1Final;
cfg.polynomS2Final = polynomS2Final;
cfg.allSigma1sColor = new Color(255, 200, 200);
cfg.allSigma2sColor = new Color(200, 200, 255);
cfg.allPolynomsS1Color = new Color(255, 230, 230);
cfg.allPolynomsS2Color = new Color(230, 230, 255);
cfg.polynomS1FinalColor = new Color(255, 0, 0);
cfg.polynomS2FinalColor = new Color(0, 0, 255);
cfg.legend1X = 0.1;
cfg.legend1Y = 0.8;
cfg.legend1Label = "sigma1";
cfg.legend2X = 0.1;
cfg.legend2Y = 0.9;
cfg.legend2Label = "sigma2";
// create and setup plot
Plot plot = new Plot("Sigma", "z [nm]", "sigma [px]", null, (float[]) null);
plot.setSize(1024, 768);
plot.setLimits(-2*zRange, +2*zRange, 0, stageStep);
double[] xVals = new double[(int)(2*zRange/stageStep) * 2 + 1];
for(int val = -2*(int)zRange, i = 0; val <= +2*(int)zRange; val += stageStep, i++) {
xVals[i] = val;
}
plot.draw();
// plot
drawSigmaPlots(plot, xVals, cfg);
// display
plot.show();
}
示例5
public static void showDriftPlot(DriftResults driftCorrection) {
int minFrame = driftCorrection.getMinFrame();
int maxFrame = driftCorrection.getMaxFrame();
int gridTicks = 200;
double tickStep = (maxFrame - minFrame) / (double) gridTicks;
double[] grid = new double[gridTicks];
double[] driftX = new double[gridTicks];
double[] driftY = new double[gridTicks];
for(int i = 0; i < gridTicks; i++) {
grid[i] = i * tickStep + minFrame;
Point2D.Double offset = driftCorrection.getInterpolatedDrift(grid[i]);
driftX[i] = offset.x;
driftY[i] = offset.y;
}
Plot plot = new Plot("Drift", "frame", "drift [" + driftCorrection.getUnits() + "]", (float[]) null, null);
if(driftCorrection.getDriftDataX().length > 50) {
plot.setFrameSize(1280, 720);
}
plot.setLimits(minFrame, driftCorrection.getMaxFrame(),
Math.min(VectorMath.min(driftCorrection.getDriftDataX()), VectorMath.min(driftCorrection.getDriftDataY())),
Math.max(VectorMath.max(driftCorrection.getDriftDataX()), VectorMath.max(driftCorrection.getDriftDataY())));
plot.setColor(new Color(255, 128, 128));
plot.addPoints(driftCorrection.getDriftDataFrame(), driftCorrection.getDriftDataX(), Plot.CROSS);
plot.draw();
plot.setColor(new Color(128, 255, 128));
plot.addPoints(driftCorrection.getDriftDataFrame(), driftCorrection.getDriftDataY(), Plot.CROSS);
plot.setColor(Color.red);
plot.addPoints(grid, driftX, Plot.LINE);
plot.addLabel(0.05, 0.8, "x drift");
plot.setColor(Color.green);
plot.addPoints(grid, driftY, Plot.LINE);
plot.addLabel(0.05, 0.9, "y drift");
plot.show();
}
示例6
@Override
public void drawSigmaPlots() {
// config plane 1
SigmaPlotConfig cfg1 = new SigmaPlotConfig();
cfg1.allFrames = allFrames1;
cfg1.allSigma1s = allSigma11s;
cfg1.allSigma2s = allSigma12s;
cfg1.allPolynomsS1 = allPolyS11;
cfg1.allPolynomsS2 = allPolyS12;
cfg1.polynomS1Final = polyS11;
cfg1.polynomS2Final = polyS12;
cfg1.allSigma1sColor = new Color(255, 200, 200);
cfg1.allSigma2sColor = new Color(200, 200, 255);
cfg1.allPolynomsS1Color = new Color(255, 230, 230);
cfg1.allPolynomsS2Color = new Color(230, 230, 255);
cfg1.polynomS1FinalColor = new Color(255, 0, 0);
cfg1.polynomS2FinalColor = new Color(0, 0, 255);
cfg1.legend1X = 0.1;
cfg1.legend1Y = 0.8;
cfg1.legend1Label = "sigma11";
cfg1.legend2X = 0.1;
cfg1.legend2Y = 0.9;
cfg1.legend2Label = "sigma12";
// config plane 2
SigmaPlotConfig cfg2 = new SigmaPlotConfig();
cfg2.allFrames = allFrames2;
cfg2.allSigma1s = allSigma21s;
cfg2.allSigma2s = allSigma22s;
cfg2.allPolynomsS1 = allPolyS21;
cfg2.allPolynomsS2 = allPolyS22;
cfg2.polynomS1Final = polyS21;
cfg2.polynomS2Final = polyS22;
cfg2.allSigma1sColor = new Color(255, 200, 255);
cfg2.allSigma2sColor = new Color(200, 255, 255);
cfg2.allPolynomsS1Color = new Color(255, 230, 255);
cfg2.allPolynomsS2Color = new Color(230, 255, 255);
cfg2.polynomS1FinalColor = new Color(255, 0, 255);
cfg2.polynomS2FinalColor = new Color(0, 255, 255);
cfg2.legend1X = 0.2;
cfg2.legend1Y = 0.8;
cfg2.legend1Label = "sigma21";
cfg2.legend2X = 0.2;
cfg2.legend2Y = 0.9;
cfg2.legend2Label = "sigma22";
// create and setup plot
Plot plot = new Plot("Sigma", "z [nm]", "sigma [px]", null, (float[]) null);
plot.setSize(1024, 768);
plot.setLimits(-2*zRange, +2*zRange, 0, stageStep);
double[] xVals = new double[(int)(2*zRange/stageStep) * 2 + 1];
for(int val = -2*(int)zRange, i = 0; val <= +2*(int)zRange; val += stageStep, i++) {
xVals[i] = val;
}
plot.draw();
// plot
drawSigmaPlots(plot, xVals, cfg1);
drawSigmaPlots(plot, xVals, cfg2);
// display
plot.show();
}
示例7
private void setPlotFont() {
if (plot == null)
return;
final String[] FONTS = new String[] { Font.SANS_SERIF, Font.MONOSPACED, Font.SERIF };
final String[] STYLES = { "Plain", "Bold", "Italic", "Bold+Italic" };
final String[] JUSTIFICATIONS = { "Left", "Center", "Right" };
final String[] SCOPES = { "Plot", "Both Axes Titles", "X-axis Title", "Y-axis Title" };
final String[] CHOICE_DEFAULTS = { FONTS[0], STYLES[0], JUSTIFICATIONS[0], SCOPES[0] };
final int[] INT_STYLES = { Font.PLAIN, Font.BOLD, Font.ITALIC, Font.BOLD + Font.ITALIC };
final int[] INT_JUSTIFICATIONS = { Plot.LEFT, Plot.CENTER, Plot.RIGHT };
final int DEF_SIZE = 12;
final boolean DEF_ANTIALISED = true;
final GenericDialog fgd = new GenericDialog("Font Options");
fgd.addChoice("Type:", FONTS, CHOICE_DEFAULTS[0]);
fgd.addChoice("Style:", STYLES, CHOICE_DEFAULTS[1]);
fgd.addChoice("Justification:", JUSTIFICATIONS, CHOICE_DEFAULTS[2]);
fgd.addSlider("Size:", 9, 24, DEF_SIZE);
fgd.setInsets(0, 20, 15);
fgd.addCheckbox("Antialiased text", DEF_ANTIALISED);
fgd.addChoice("Apply to:", SCOPES, CHOICE_DEFAULTS[3]);
fgd.hideCancelButton();
fgd.addHelp("");
fgd.setHelpLabel("Apply Defaults");
fgd.addDialogListener(new DialogListener() {
@Override
public boolean dialogItemChanged(final GenericDialog gd, final AWTEvent e) {
if (e != null && e.toString().contains("Apply Defaults")) {
@SuppressWarnings("unchecked")
final Vector<Choice> nChoices = gd.getChoices();
for (final Choice choice : nChoices)
choice.select(CHOICE_DEFAULTS[nChoices.indexOf(choice)]);
((TextField) gd.getNumericFields().get(0)).setText(Integer.toString(DEF_SIZE));
((Checkbox) gd.getCheckboxes().get(0)).setState(DEF_ANTIALISED);
}
final String type = FONTS[fgd.getNextChoiceIndex()];
final int style = INT_STYLES[fgd.getNextChoiceIndex()];
final int justification = INT_JUSTIFICATIONS[fgd.getNextChoiceIndex()];
final int size = (int) fgd.getNextNumber();
final int scopeIdx = fgd.getNextChoiceIndex();
plot.setJustification(justification);
plot.setAntialiasedText(fgd.getNextBoolean());
final Font font = new Font(type, style, size);
switch (scopeIdx) {
case 1: // SCOPES[1]
plot.setXLabelFont(font);
plot.setYLabelFont(font);
break;
case 2: // SCOPES[2]
plot.setXLabelFont(font);
break;
case 3: // SCOPES[3]
plot.setYLabelFont(font);
break;
default:
plot.setFont(font);
plot.setXLabelFont(font);
plot.setYLabelFont(font);
break;
}
plot.updateImage();
return true;
}
});
showAsSubDialog(fgd);
if (!fgd.wasOKed())
return;
}