Class 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: 7883 $
    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

      Fields 
      Modifier and Type Field Description
      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

      Constructors 
      Constructor Description
      BoundaryPanel​(int panelWidth, int panelHeight)
      Creates a new BoundaryPanel instance.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      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, 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 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