weka.gui.boundaryvisualizer
Class BoundaryPanel

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by javax.swing.JPanel
                  extended by weka.gui.boundaryvisualizer.BoundaryPanel
All Implemented Interfaces:
java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, javax.accessibility.Accessible
Direct Known Subclasses:
BoundaryPanelDistributed

public class BoundaryPanel
extends javax.swing.JPanel

BoundaryPanel. A class to handle the plotting operations associated with generating a 2D picture of a classifier's decision boundaries.

Since:
1.0
Version:
$Revision: 5984 $
Author:
Mark Hall
See Also:
JPanel, Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
 
Nested classes/interfaces inherited from class java.awt.Component
java.awt.Component.BaselineResizeBehavior
 
Field Summary
static java.awt.Color[] DEFAULT_COLORS
          default colours for classes
static double REMOVE_POINT_RADIUS
          The distance we can click away from a point in the GUI and still remove it.
 
Fields inherited from class javax.swing.JComponent
TOOL_TIP_TEXT_KEY, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
 
Fields inherited from class java.awt.Component
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
BoundaryPanel(int panelWidth, int panelHeight)
          Creates a new BoundaryPanel instance.
 
Method Summary
 void addActionListener(java.awt.event.ActionListener newListener)
          Register a listener to be notified when plotting completes
 void addMouseListener(java.awt.event.MouseListener l)
          Adds a mouse listener.
 void addTrainingInstance(Instance instance)
          Adds a training instance to the visualization dataset.
 void addTrainingInstanceFromMouseLocation(int mouseX, int mouseY, int classAttIndex, double classValue)
          Adds a training instance to our dataset, based on the coordinates of the mouse on the panel.
 void computeMinMaxAtts()
          Set up the bounds of our graphic based by finding the smallest reasonable area in the instance space to surround our data points.
 FastVector getColors()
          Get the current vector of Color objects used for the classes
 double getGeneratorSamplesBase()
          Get the base used for computing the number of samples to obtain from each generator
 double getMaxXBound()
          Gets the maximum x-coordinate bound, in training-instance units (not mouse coordinates).
 double getMaxYBound()
          Gets the maximum x-coordinate bound, in training-instance units (not mouse coordinates).
 double getMinXBound()
          Gets the minimum x-coordinate bound, in training-instance units (not mouse coordinates).
 double getMinYBound()
          Gets the minimum y-coordinate bound, in training-instance units (not mouse coordinates).
 int getNumSamplesPerRegion()
          Get the number of points to sample from a region (fixed dimensions).
 boolean getPlotTrainingData()
          Returns true if training data is to be superimposed
static void main(java.lang.String[] args)
          Main method for testing this class
 void plotTrainingData()
          Render the training points on-screen.
 void removeActionListener(java.awt.event.ActionListener removeListener)
          Remove a listener
 void removeAllInstances()
          Deletes all training instances from our dataset.
 void removeTrainingInstanceFromMouseLocation(int mouseX, int mouseY)
          Removes a single training instance from our dataset, if there is one that is close enough to the specified mouse location.
 void replot()
          Quickly replot the display using cached probability estimates
 void setClassifier(Classifier classifier)
          Set the classifier to use.
 void setColors(FastVector colors)
          Set a vector of Color objects for the classes
 void setDataGenerator(DataGenerator dataGenerator)
          Set the data generator to use for generating new instances
 void setGeneratorSamplesBase(double ksb)
          Set the base for computing the number of samples to obtain from each generator.
 void setNumSamplesPerRegion(int num)
          Set the number of points to uniformly sample from a region (fixed dimensions).
 void setPlotTrainingData(boolean pg)
          Set whether to superimpose the training data plot
 void setTrainingData(Instances trainingData)
          Set the training data to use
 void setXAttribute(int xatt)
          Set the x attribute index
 void setYAttribute(int yatt)
          Set the y attribute index
 void start()
          Start the plotting thread
 void startPlotThread()
          Starts the plotting thread.
 void stopPlotting()
          Stop the plotting thread
 
Methods inherited from class javax.swing.JPanel
getAccessibleContext, getUI, getUIClassID, setUI, updateUI
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintImmediately, paintImmediately, print, printAll, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusDownCycle, validate
 
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, contains, createImage, createImage, createVolatileImage, createVolatileImage, dispatchEvent, enable, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

DEFAULT_COLORS

public static final java.awt.Color[] DEFAULT_COLORS
default colours for classes


REMOVE_POINT_RADIUS

public static final double REMOVE_POINT_RADIUS
The distance we can click away from a point in the GUI and still remove it.

See Also:
Constant Field Values
Constructor Detail

BoundaryPanel

public BoundaryPanel(int panelWidth,
                     int panelHeight)
Creates a new BoundaryPanel instance.

Parameters:
panelWidth - the width in pixels of the panel
panelHeight - the height in pixels of the panel
Method Detail

setNumSamplesPerRegion

public void setNumSamplesPerRegion(int num)
Set the number of points to uniformly sample from a region (fixed dimensions).

Parameters:
num - an int value

getNumSamplesPerRegion

public int getNumSamplesPerRegion()
Get the number of points to sample from a region (fixed dimensions).

Returns:
an int value

setGeneratorSamplesBase

public void setGeneratorSamplesBase(double ksb)
Set the base for computing the number of samples to obtain from each generator. number of samples = base ^ (# non fixed dimensions)

Parameters:
ksb - a double value

getGeneratorSamplesBase

public double getGeneratorSamplesBase()
Get the base used for computing the number of samples to obtain from each generator

Returns:
a double value

stopPlotting

public void stopPlotting()
Stop the plotting thread


computeMinMaxAtts

public void computeMinMaxAtts()
Set up the bounds of our graphic based by finding the smallest reasonable area in the instance space to surround our data points.


start

public void start()
           throws java.lang.Exception
Start the plotting thread

Throws:
java.lang.Exception - if an error occurs

plotTrainingData

public void plotTrainingData()
Render the training points on-screen.


setTrainingData

public void setTrainingData(Instances trainingData)
                     throws java.lang.Exception
Set the training data to use

Parameters:
trainingData - the training data
Throws:
java.lang.Exception - if an error occurs

addTrainingInstance

public void addTrainingInstance(Instance instance)
Adds a training instance to the visualization dataset.


addActionListener

public void addActionListener(java.awt.event.ActionListener newListener)
Register a listener to be notified when plotting completes

Parameters:
newListener - the listener to add

removeActionListener

public void removeActionListener(java.awt.event.ActionListener removeListener)
Remove a listener

Parameters:
removeListener - the listener to remove

setClassifier

public void setClassifier(Classifier classifier)
Set the classifier to use.

Parameters:
classifier - the classifier to use

setDataGenerator

public void setDataGenerator(DataGenerator dataGenerator)
Set the data generator to use for generating new instances

Parameters:
dataGenerator - the data generator to use

setXAttribute

public void setXAttribute(int xatt)
                   throws java.lang.Exception
Set the x attribute index

Parameters:
xatt - index of the attribute to use on the x axis
Throws:
java.lang.Exception - if an error occurs

setYAttribute

public void setYAttribute(int yatt)
                   throws java.lang.Exception
Set the y attribute index

Parameters:
yatt - index of the attribute to use on the y axis
Throws:
java.lang.Exception - if an error occurs

setColors

public void setColors(FastVector colors)
Set a vector of Color objects for the classes

Parameters:
colors - a FastVector value

setPlotTrainingData

public void setPlotTrainingData(boolean pg)
Set whether to superimpose the training data plot

Parameters:
pg - a boolean value

getPlotTrainingData

public boolean getPlotTrainingData()
Returns true if training data is to be superimposed

Returns:
a boolean value

getColors

public FastVector getColors()
Get the current vector of Color objects used for the classes

Returns:
a FastVector value

replot

public void replot()
Quickly replot the display using cached probability estimates


addTrainingInstanceFromMouseLocation

public void addTrainingInstanceFromMouseLocation(int mouseX,
                                                 int mouseY,
                                                 int classAttIndex,
                                                 double classValue)
Adds a training instance to our dataset, based on the coordinates of the mouse on the panel. This method sets the x and y attributes and the class (as defined by classAttIndex), and sets all other values as Missing.

Parameters:
mouseX - the x coordinate of the mouse, in pixels.
mouseY - the y coordinate of the mouse, in pixels.
classAttIndex - the index of the attribute that is currently selected as the class attribute.
classValue - the value to set the class to in our new point.

removeAllInstances

public void removeAllInstances()
Deletes all training instances from our dataset.


removeTrainingInstanceFromMouseLocation

public void removeTrainingInstanceFromMouseLocation(int mouseX,
                                                    int mouseY)
Removes a single training instance from our dataset, if there is one that is close enough to the specified mouse location.


startPlotThread

public void startPlotThread()
Starts the plotting thread. Will also create it if necessary.


addMouseListener

public void addMouseListener(java.awt.event.MouseListener l)
Adds a mouse listener.

Overrides:
addMouseListener in class java.awt.Component

getMinXBound

public double getMinXBound()
Gets the minimum x-coordinate bound, in training-instance units (not mouse coordinates).


getMinYBound

public double getMinYBound()
Gets the minimum y-coordinate bound, in training-instance units (not mouse coordinates).


getMaxXBound

public double getMaxXBound()
Gets the maximum x-coordinate bound, in training-instance units (not mouse coordinates).


getMaxYBound

public double getMaxYBound()
Gets the maximum x-coordinate bound, in training-instance units (not mouse coordinates).


main

public static void main(java.lang.String[] args)
Main method for testing this class

Parameters:
args - a String[] value