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.
> Thanks to VisAD and Bill and Steve I have nearly completed my textual > data mining visualization project. I'm now working on fine-grain > usability issues. In particular I have a 3-D surface that represents > the number of documents related to a particular word stem. As I move a > yellow dot across the surface the corresponding stem is highlighted in > a JFC table. The usability problem I am having relates to trying to > match the dot with a peak in the 3-D surface. I can move the dot to > what I think is the peak and if I rotate the surface I can see I've > missed it by a mile (well not quite that far). If I keep moving the > dot and spinning the surface I can usually intersect the dot with a > particular peak on the surface after about 5 or 6 tries. This problem > is illustrated here: > > http://www.wizards.dupont.com/cristy/images/global-som.jpg > > One way to improve this is to show three different views of the surface > and move the dot in one window and visualize it's movements in the > other two. The problem with this idea is screen real-estate. There > just isn't enough for three views while still having the surface large > enough to easily distinguish detail. > > Another way would be to have the dot cast a shadow on the surface to > help give visual cues as the dot moves toward a surface. Can this be > done? How? Yes. You need two 'dot' objects displayed. One is your current RealTuple displayed with DirectManipulationRendererJ3D that you drag, the other has the RealTupleType (X, Y, Documents) and is displayed in some distinctive color. In the CellImpl.doAction method for your draggable 'dot', extract the X and Y components of the RealTuple that implements the dot, make an (X, Y) RealTuple out of them and pass it to the evaluate method of your FlatField to get the corresponding Documents value. Then construct a new RealTuple value (X, Y, Documents) for the other dot. With some luck this should appear to move on the surface (you may need to add some epsilon to the Documents value to keep it just above the surface). > Right now the surface is monochrome. I would like to force the peaks > to be almost pure white as if it had snow. It sort-of does that now > but is not dramatic enough to give the proper visual cues. When you map a RealType to RGB, you can get the ColorControl from the ScalarMap (see examples/DisplayTest.java case 12) and set a color table to give you the color you want. You can also embed a LabeledRGBWidget in your GUI and use it to adjust colors as run time, as in DisplayTest case 12. > Another problem I am having is when there are just a few stems the > surface needs smoothing. Is there an easy operation to effect this? > This problem is illustrated here: > > http://www.wizards.dupont.com/cristy/images/local-som.jpg Tom Rink is currently working on a derivative method for the Function interface (including implementations for FieldImpl and FlatField), and filter operations could be next. In the mean time, you could hack a simple low-pass filter by resampling your FlatField to a Linear2DSet (use the resample method), extracting the values (use the getValues method), do a simple filter (interpreting the values as a 2-D array), and put the values back into the FlatField (use the 'public void setSamples(float[][] range)' method). > As always, thanks in advance for any help you may offer. I want to set up a section of the VisAD web page that points at cool applications. If you have a URL that describes your work, please let me know so I can include it. Thanks. Bill ---------------------------------------------------------- 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: