Package weka.gui.boundaryvisualizer

# Class BoundaryPanel

java.lang.Object
java.awt.Component
java.awt.Container
javax.swing.JComponent
javax.swing.JPanel
weka.gui.boundaryvisualizer.BoundaryPanel

All Implemented Interfaces:
  `ImageObserver`, `MenuContainer`, `Serializable`, `Accessible`

Direct Known Subclasses:
  `BoundaryPanelDistributed`

public class BoundaryPanel extends 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: 12565 $
Author:
  Mark Hall
See Also:
  - `JPanel`
  - Serialized Form

- ## Nested Class Summary

  ## Nested classes/interfaces inherited from class javax.swing.JComponent

  `JComponent.AccessibleJComponent`

  ## Nested classes/interfaces inherited from class java.awt.Component

  `Component.BaselineResizeBehavior`

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final Color[]`
  `DEFAULT_COLORS`
  default colours for classes
  `static final 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

  Constructors
  Constructor
  Description
  `BoundaryPanel(int panelWidth, int panelHeight)`
  Creates a new `BoundaryPanel` instance.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `addActionListener(ActionListener newListener)`
  Register a listener to be notified when plotting completes
  `void`
  `addMouseListener(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.
  `ArrayList<Color>`
  `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(String[] args)`
  Main method for testing this class
  `void`
  `plotTrainingData()`
  Render the training points on-screen.
  `void`
  `removeActionListener(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(ArrayList<Color> 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, hide, 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, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, 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, requestFocus, requestFocusInWindow, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setMixingCutoutShape, 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 Details

  - ### DEFAULT_COLORS

    public static final 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 Details

  - ### 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 Details

  - ### 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 Exception
    Start the plotting thread
    Throws:
      `Exception` - if an error occurs

  - ### plotTrainingData

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

  - ### setTrainingData

    public void setTrainingData(Instances trainingData) throws Exception
    Set the training data to use
    Parameters:
      `trainingData` - the training data
    Throws:
      `Exception` - if an error occurs

  - ### addTrainingInstance

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

  - ### addActionListener

    public void addActionListener(ActionListener newListener)
    Register a listener to be notified when plotting completes
    Parameters:
      `newListener` - the listener to add

  - ### removeActionListener

    public void removeActionListener(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 Exception
    Set the x attribute index
    Parameters:
      `xatt` - index of the attribute to use on the x axis
    Throws:
      `Exception` - if an error occurs

  - ### setYAttribute

    public void setYAttribute(int yatt) throws Exception
    Set the y attribute index
    Parameters:
      `yatt` - index of the attribute to use on the y axis
    Throws:
      `Exception` - if an error occurs

  - ### setColors

    public void setColors(ArrayList<Color> 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 ArrayList<Color> 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(MouseListener l)
    Adds a mouse listener.
    Overrides:
      `addMouseListener` in class `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(String[] args)
    Main method for testing this class
    Parameters:
      `args` - a `String[]` value