weka.gui.visualize
Class VisualizePanel.PlotPanel

java.lang.Object
  extended byjava.awt.Component
      extended byjava.awt.Container
          extended byjavax.swing.JComponent
              extended byjavax.swing.JPanel
                  extended byweka.gui.visualize.VisualizePanel.PlotPanel
All Implemented Interfaces:
javax.accessibility.Accessible, java.awt.image.ImageObserver, java.awt.MenuContainer, Plot2DCompanion, java.io.Serializable
Enclosing class:
VisualizePanel

protected class VisualizePanel.PlotPanel
extends javax.swing.JPanel
implements Plot2DCompanion

Inner class to handle plotting

See Also:
Serialized Form

Nested Class Summary
 
Nested classes inherited from class javax.swing.JPanel
javax.swing.JPanel.AccessibleJPanel
 
Nested classes inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
 
Nested classes inherited from class java.awt.Container
java.awt.Container.AccessibleAWTContainer
 
Nested classes inherited from class java.awt.Component
java.awt.Component.AccessibleAWTComponent, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
 
Field Summary
private  int m_axisPad
          Axis padding
protected  int m_cIndex
           
private  boolean m_createShape
          True if the user is currently dragging a box.
private  java.awt.Dimension m_newMousePos
          contains the position of the mouse (used for rubberbanding).
protected  PlotData2D m_originalPlot
          The master plot
protected  Plot2D m_plot2D
          The actual generic plotting panel
protected  Instances m_plotInstances
          The instances from the master plot
private  FastVector m_shapePoints
          contains the points of the shape currently being drawn.
private  FastVector m_shapes
          contains all the shapes that have been drawn for these attribs
protected  int m_sIndex
           
private  int m_tickSize
          Tick size
private  int m_XaxisEnd
           
private  int m_XaxisStart
          the offsets of the axes once label metrics are calculated
protected  int m_xIndex
          Indexes of the attributes to go on the x and y axis and the attribute to use for colouring and the current shape for drawing
private  int m_YaxisEnd
           
private  int m_YaxisStart
           
protected  int m_yIndex
           
 
Fields inherited from class javax.swing.JPanel
 
Fields inherited from class javax.swing.JComponent
accessibleContext, listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
 
Fields inherited from class java.awt.Container
 
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
VisualizePanel.PlotPanel()
          Constructor
 
Method Summary
 void addPlot(PlotData2D newPlot)
          Adds a plot.
 void cancelShapes()
          Sets the list of shapes to empty and also cancels the current shape being drawn (if applicable).
private  boolean checkPoints(double x1, double y1)
          This will check the values of the screen points passed and make sure that they land on the screen
private  void drawShapes(java.awt.Graphics gx)
          This will draw the shapes created onto the panel.
 FastVector getShapes()
           
private  int[] getXCoords(FastVector v)
          This will extract from a polygon shape its x coodrdinates so that an awt.Polygon can be created.
private  int[] getYCoords(FastVector v)
          This will extract from a polygon shape its y coordinates so that an awt.Polygon can be created.
private  boolean inPoly(FastVector ob, double x, double y)
          This checks to see if The coordinate passed is inside the polygon that was passed.
private  boolean inPolyline(FastVector ob, double x, double y)
          Checks to see if the coordinate passed is inside the ployline passed, Note that this is done using attribute values and not there respective screen values.
 boolean inSplit(Instance i)
          This will check if an instance is inside or outside of the current shapes.
private  double[] lineIntersect(double x1, double y1, double x2, double y2, double x, double y, double offset)
          This is called for polylines to see where there two lines that extend to infinity cut the border of the view.
private  FastVector makePolygon(FastVector v)
          This will convert a polyline to a polygon for drawing purposes So that I can simply use the polygon drawing function.
private  void plotReset(Instances inst, int cIndex)
          Reset the visualize panel's buttons and the plot panels instances
 void prePlot(java.awt.Graphics gx)
          Renders the polygons if necessary
 void setCindex(int c)
          Set the index of the attribute to use for colouring
 void setColours(FastVector cols)
          Set a list of colours to use for plotting points
 void setJitter(int j)
          Set level of jitter and repaint the plot using the new jitter value
 void setMasterPlot(PlotData2D newPlot)
          Clears all existing plots and sets a new master plot
 void setShapes(FastVector v)
          This can be used to set the shapes that should appear.
 void setSindex(int s)
          Set the index of the attribute to use for the shape.
 void setXindex(int x)
          Set the index of the attribute to go on the x axis
 void setYindex(int y)
          Set the index of the attribute to go on the y axis
protected  void switchToLegend()
          Remove the attibute panel and replace it with the legend panel
 
Methods inherited from class javax.swing.JPanel
getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUI
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addPropertyChangeListener, addPropertyChangeListener, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBorder, getBounds, getClientProperty, getComponentGraphics, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getGraphics, getHeight, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPreferredSize, getPropertyChangeListeners, getPropertyChangeListeners, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isMaximumSizeSet, isMinimumSizeSet, isOpaque, isOptimizedDrawingEnabled, isPaintingTile, isPreferredSizeSet, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removePropertyChangeListener, removePropertyChangeListener, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFont, setForeground, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setFocusCycleRoot, setFocusTraversalKeys, setFocusTraversalPolicy, setLayout, transferFocusBackward, transferFocusDownCycle, validate, validateTree
 
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMouseWheelListeners, getName, getParent, getPeer, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

m_plot2D

protected Plot2D m_plot2D
The actual generic plotting panel


m_plotInstances

protected Instances m_plotInstances
The instances from the master plot


m_originalPlot

protected PlotData2D m_originalPlot
The master plot


m_xIndex

protected int m_xIndex
Indexes of the attributes to go on the x and y axis and the attribute to use for colouring and the current shape for drawing


m_yIndex

protected int m_yIndex

m_cIndex

protected int m_cIndex

m_sIndex

protected int m_sIndex

m_axisPad

private final int m_axisPad
Axis padding

See Also:
Constant Field Values

m_tickSize

private final int m_tickSize
Tick size

See Also:
Constant Field Values

m_XaxisStart

private int m_XaxisStart
the offsets of the axes once label metrics are calculated


m_YaxisStart

private int m_YaxisStart

m_XaxisEnd

private int m_XaxisEnd

m_YaxisEnd

private int m_YaxisEnd

m_createShape

private boolean m_createShape
True if the user is currently dragging a box.


m_shapes

private FastVector m_shapes
contains all the shapes that have been drawn for these attribs


m_shapePoints

private FastVector m_shapePoints
contains the points of the shape currently being drawn.


m_newMousePos

private java.awt.Dimension m_newMousePos
contains the position of the mouse (used for rubberbanding).

Constructor Detail

VisualizePanel.PlotPanel

public VisualizePanel.PlotPanel()
Constructor

Method Detail

getShapes

public FastVector getShapes()
Returns:
The FastVector containing all the shapes.

cancelShapes

public void cancelShapes()
Sets the list of shapes to empty and also cancels the current shape being drawn (if applicable).


setShapes

public void setShapes(FastVector v)
This can be used to set the shapes that should appear.

Parameters:
v - The list of shapes.

checkPoints

private boolean checkPoints(double x1,
                            double y1)
This will check the values of the screen points passed and make sure that they land on the screen

Parameters:
x1 - The x coord.
y1 - The y coord.

inSplit

public boolean inSplit(Instance i)
This will check if an instance is inside or outside of the current shapes.

Parameters:
i - The instance to check.
Returns:
True if 'i' falls inside the shapes, false otherwise.

inPolyline

private boolean inPolyline(FastVector ob,
                           double x,
                           double y)
Checks to see if the coordinate passed is inside the ployline passed, Note that this is done using attribute values and not there respective screen values.

Parameters:
ob - The polyline.
x - The x coord.
y - The y coord.
Returns:
True if it falls inside the polyline, false otherwise.

inPoly

private boolean inPoly(FastVector ob,
                       double x,
                       double y)
This checks to see if The coordinate passed is inside the polygon that was passed.

Parameters:
ob - The polygon.
x - The x coord.
y - The y coord.
Returns:
True if the coordinate is in the polygon, false otherwise.

setJitter

public void setJitter(int j)
Set level of jitter and repaint the plot using the new jitter value

Parameters:
j - the level of jitter

setXindex

public void setXindex(int x)
Set the index of the attribute to go on the x axis

Parameters:
x - the index of the attribute to use on the x axis

setYindex

public void setYindex(int y)
Set the index of the attribute to go on the y axis

Parameters:
y - the index of the attribute to use on the y axis

setCindex

public void setCindex(int c)
Set the index of the attribute to use for colouring

Parameters:
c - the index of the attribute to use for colouring

setSindex

public void setSindex(int s)
Set the index of the attribute to use for the shape.

Parameters:
s - the index of the attribute to use for the shape

setMasterPlot

public void setMasterPlot(PlotData2D newPlot)
                   throws java.lang.Exception
Clears all existing plots and sets a new master plot

Parameters:
newPlot - the new master plot
Throws:
java.lang.Exception - if plot could not be added

addPlot

public void addPlot(PlotData2D newPlot)
             throws java.lang.Exception
Adds a plot. If there are no plots so far this plot becomes the master plot and, if it has a custom colour defined then the class panel is removed.

Parameters:
newPlot - the plot to add.
Throws:
java.lang.Exception - if plot could not be added

switchToLegend

protected void switchToLegend()
Remove the attibute panel and replace it with the legend panel


plotReset

private void plotReset(Instances inst,
                       int cIndex)
Reset the visualize panel's buttons and the plot panels instances


setColours

public void setColours(FastVector cols)
Set a list of colours to use for plotting points

Parameters:
cols - a list of java.awt.Colors

drawShapes

private void drawShapes(java.awt.Graphics gx)
This will draw the shapes created onto the panel. For best visual, this should be the first thing to be drawn (and it currently is).

Parameters:
gx - The graphics context.

lineIntersect

private double[] lineIntersect(double x1,
                               double y1,
                               double x2,
                               double y2,
                               double x,
                               double y,
                               double offset)
This is called for polylines to see where there two lines that extend to infinity cut the border of the view.

Parameters:
x1 - an x point along the line
y1 - the accompanying y point.
x2 - The x coord of the end point of the line.
y2 - The y coord of the end point of the line.
x - 0 or the width of the border line if it has one.
y - 0 or the height of the border line if it has one.
offset - The offset for the border line (either for x or y dependant on which one doesn't change).
Returns:
double array that contains the coordinate for the point that the polyline cuts the border (which ever side that may be).

makePolygon

private FastVector makePolygon(FastVector v)
This will convert a polyline to a polygon for drawing purposes So that I can simply use the polygon drawing function.

Parameters:
v - The polyline to convert.
Returns:
A FastVector containing the polygon.

getXCoords

private int[] getXCoords(FastVector v)
This will extract from a polygon shape its x coodrdinates so that an awt.Polygon can be created.

Parameters:
v - The polygon shape.
Returns:
an int array containing the screen x coords for the polygon.

getYCoords

private int[] getYCoords(FastVector v)
This will extract from a polygon shape its y coordinates so that an awt.Polygon can be created.

Parameters:
v - The polygon shape.
Returns:
an int array containing the screen y coords for the polygon.

prePlot

public void prePlot(java.awt.Graphics gx)
Renders the polygons if necessary

Specified by:
prePlot in interface Plot2DCompanion
Parameters:
gx - the graphics context