NOTICE: This version of the NSF Unidata web site (archive.unidata.ucar.edu) is no longer being updated.
Current content can be found at unidata.ucar.edu.
To learn about what's going on, see About the Archive Site.
I'm not sure I completely nderstand you data and how you want to display it, but here's a quick example of how you could do it. This code compiles (with suitable substitutions for 'Xi', 'Yj' and 'Zij") but I have not tried to run it. On the other hand, it is an combination of working examples from the Developer's Guide. Good luck, and let me know if you have any questions or problems. Bill public class Scatter { // import needed classes import visad.*; import visad.java3d.DisplayImplJ3D; import java.rmi.RemoteException; import java.awt.*; import java.awt.event.*; import java.awt.swing.*; public static void main(String args[]) throws VisADException, RemoteException { // construct a MathType ((I, J) -> (X, Y, Z)) // first construct (I, J) RealType I = new RealType("I", null, null); RealType J = new RealType("J", null, null); RealTupleType IJ = new RealTupleType(new RealType[] {I, J}); // next construct (X, Y, Z) RealType X = new RealType("X", null, null); RealType Y = new RealType("Y", null, null); RealType Z = new RealType("Z", null, null); RealTupleType XYZ = new RealTupleType(new RealType[] {X, Y, Z}); // now construct ((I, J) -> (X, Y, Z)) FunctionType field_type = new FunctionType(IJ, XYZ); // construct a 5 by 3 integer sampling Integer2DSet domain_set = new Integer2DSet(5, 3); // construct a FlatField to hold values FlatField field = new FlatField(field_type, domain_set); // fill values into 'data' array float[][] data = new float[3][5 * 3]; for (int i=0; i<5; i++) { for (int j=0; j<3; j++) { // substitute source of values for 'Xi', 'Yj' // and 'Zij' in these three lines data[0][i + 5*j] = Xi; data[0][i + 5*j] = Yi; data[0][i + 5*j] = Zij; } } // set the data values into the FlatField field.setSamples(data); // construct a scatter plot Display DisplayImpl display = new DisplayImplJ3D("image display"); // construct mappings to define how data are displayed display.addMap(new ScalarMap(X, Display.XAxis)); display.addMap(new ScalarMap(Y, Display.YAxis)); display.addMap(new ScalarMap(Z, Display.ZAxis)); /* NOTE, if you wanted to see your data as a surface of Z values, colored by X and Y values, you do use the following mappings INSTEAD: display.addMap(new ScalarMap(I, Display.XAxis)); display.addMap(new ScalarMap(J, Display.YAxis)); display.addMap(new ScalarMap(Z, Display.ZAxis)); display.addMap(new ScalarMap(X, Display.Red)); display.addMap(new ScalarMap(Y, Display.Green)); */ // create a reference to the data DataReference field_ref = new DataReferenceImpl("field"); field_ref.setData(field); // and use it to link data to display display.addReference(field_ref); // create JFrame (i.e., a window) for display and slider JFrame frame = new JFrame("Simple VisAD Application"); frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) {System.exit(0);} }); // create JPanel in JFrame JPanel panel = new JPanel(); panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS)); panel.setAlignmentY(JPanel.TOP_ALIGNMENT); panel.setAlignmentX(JPanel.LEFT_ALIGNMENT); frame.getContentPane().add(panel); // add display to JPanel panel.add(display.getComponent()); // set size of JFrame and make it visible frame.setSize(500, 600); frame.setVisible(true); } } ---------------------------------------------------------- Bill Hibbard, SSEC, 1225 W. Dayton St., Madison, WI 53706 whibbard@xxxxxxxxxxxxx 608-263-4427 fax: 608-263-6738 http://www.ssec.wisc.edu/~billh/vis.html "kill cross-platform Java by growing the polluted Java market" - from an internal Microsoft planning document
visad
archives: