Class AttributeVisualizationPanel

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

    public class AttributeVisualizationPanel
    extends adams.gui.core.BasePanel
    Creates a panel that shows a visualization of an attribute in a dataset. For nominal attribute it shows a bar plot, with each bar corresponding to each nominal value of the attribute with its height equal to the frequecy that value appears in the dataset. For numeric attributes, it displays a histogram. The width of an interval in the histogram is calculated using Scott's(1979) method:
    intervalWidth = Max(1, 3.49*Std.Dev*numInstances^(1/3)) Then the number of intervals is calculated by:
    intervals = max(1, Math.round(Range/intervalWidth);
    Author:
    Ashraf M. Kibriya (amk14@cs.waikato.ac.nz), FracPete (fracpete at waikato dot ac dot nz)
    See Also:
    Serialized Form
    • Field Detail

      • m_data

        protected weka.core.Instances m_data
        This holds the current set of instances
      • m_as

        protected weka.core.AttributeStats m_as
        This holds the attribute stats of the current attribute on display. It is calculated in setAttribute(int idx) when it is called to set a new attribute index.
      • m_asCache

        protected weka.core.AttributeStats[] m_asCache
        Cache of attribute stats info for the current data set
      • m_attribIndex

        protected int m_attribIndex
        This holds the index of the current attribute on display and should be set through setAttribute(int idx).
      • m_maxValue

        protected double m_maxValue
        This holds the max value of the current attribute. In case of nominal attribute it is the highest count that a nominal value has in the attribute (given by m_as.nominalWeights[i]), otherwise in case of numeric attribute it is simply the maximum value present in the attribute (given by m_as.numericStats.max). It is used to calculate the ratio of the height of the bars with respect to the height of the display area.
      • m_histBarCounts

        protected double[] m_histBarCounts
        This array holds the count (or height) for the each of the bars in a barplot or a histogram. In case of barplots (and current attribute being nominal) its length (and the number of bars) is equal to the number of nominal values in the current attribute, with each field of the array being equal to the count of each nominal that it represents (the count of ith nominal value of an attribute is given by m_as.nominalWeights[i]). Whereas, in case of histograms (and current attribute being numeric) the width of its intervals is calculated by Scott's(1979) method:
        intervalWidth = Max(1, 3.49*Std.Dev*numInstances^(1/3)) And the number of intervals by:
        intervals = max(1, Math.round(Range/intervalWidth); Then each field of this array contains the number of values of the current attribute that fall in the histogram interval that it represents.
        NOTE: The values of this array are only calculated if the class attribute is not set or if it is numeric.
      • m_histBarClassCounts

        protected weka.core.SparseInstance[] m_histBarClassCounts
        This array holds the per class count (or per class height) of the each of the bars in a barplot or a histogram. For nominal attributes the format is:
        m_histBarClassCounts[nominalValue][classValue+1]. For numeric attributes the format is:
        m_histBarClassCounts[interval][classValues+1],
        where the number of intervals is calculated by the Scott's method as mentioned above. The array is initialized to have 1+numClasses to accomodate for instances with missing class value. The ones with missing class value are displayed as a black sub par in a histogram or a barplot. NOTE: The values of this array are only calculated if the class attribute is set and it is nominal.
      • m_barRange

        protected double m_barRange
        Contains the range of each bar in a histogram. It is used to work out the range of bar the mouse pointer is on in getToolTipText().
      • m_classIndex

        protected int m_classIndex
        Contains the current class index.
      • m_threadRun

        protected boolean m_threadRun
        True if the thread m_hc above is running.
      • m_doneCurrentAttribute

        protected boolean m_doneCurrentAttribute
      • m_displayCurrentAttribute

        protected boolean m_displayCurrentAttribute
      • m_colorAttrib

        protected adams.gui.core.BaseComboBox<String> m_colorAttrib
        This stores and lets the user select a class attribute. It also has an entry "No Class" if the user does not want to set a class attribute for colouring.
      • m_fm

        protected final FontMetrics m_fm
        Fontmetrics used to get the font size which is required for calculating displayable area size, bar height ratio and width of strings that are displayed on top of bars indicating their count.
      • m_locker

        protected final Integer m_locker
        Lock variable to synchronize the different threads running currently in this class. There are two to three threads in this class, AWT paint thread which is handled differently in paintComponent() which checks on m_threadRun to determine if it can perform full paint or not, the second thread is the main execution thread and the third is the one represented by m_hc which we start when we want to calculate the internal fields for a bar plot or a histogram.
      • m_colorList

        protected final List<Color> m_colorList
        Contains discrete colours for colouring of subbars of histograms and bar plots when the class attribute is set and is nominal
      • m_defaultColors

        protected static final Color[] m_defaultColors
        default colour list
      • m_ColorProvider

        protected static adams.gui.visualization.core.ColorProvider m_ColorProvider
        the color provider.
    • Constructor Detail

      • AttributeVisualizationPanel

        public AttributeVisualizationPanel()
        Constructor - If used then the class will not show the class selection combo box.
      • AttributeVisualizationPanel

        public AttributeVisualizationPanel​(boolean showColouringOption)
        Constructor.
        Parameters:
        showColouringOption - - should be true if the class selection combo box is to be displayed with the histogram/barplot, or false otherwise. P.S: the combo box is always created it just won't be shown if showColouringOption is false.
    • Method Detail

      • getPopupMenu

        protected JPopupMenu getPopupMenu()
        Creates and returns the popup menu.
        Returns:
        the menu
      • changeColorProvider

        protected void changeColorProvider()
        Lets the user choose another color provider.
      • resetColorProvider

        protected void resetColorProvider()
        Resets the color provider to the default one.
      • setInstances

        public void setInstances​(weka.core.Instances data)
        Sets the instances for use
        Parameters:
        data - a set of Instances, null to unset
      • getInstances

        public weka.core.Instances getInstances()
        Returns the underlying data.
        Returns:
        the data
      • getDefaultColorProvider

        public static adams.gui.visualization.core.ColorProvider getDefaultColorProvider()
        Returns the default color provider to use.
        Returns:
        the default
      • getColorProvider

        protected adams.gui.visualization.core.ColorProvider getColorProvider()
        Returns the color provider to use.
        Returns:
        the color provider
      • getColorList

        protected List<Color> getColorList()
        Returns the list of colors to use.
        Returns:
        the list
      • getColorBox

        public adams.gui.core.BaseComboBox getColorBox()
        Returns the class selection combo box if the parent component wants to place it in itself or in some component other than this component.
      • getColoringIndex

        public int getColoringIndex()
        Get the coloring (class) index for the plot
        Returns:
        an int value
      • setColoringIndex

        public void setColoringIndex​(int ci)
        Set the coloring (class) index for the plot
        Parameters:
        ci - an int value
      • setAttribute

        public void setAttribute​(int index)
        Tells the panel which attribute to visualize.
        Parameters:
        index - The index of the attribute
      • getAttribute

        public int getAttribute()
        Returns the attribute being displayed.
        Returns:
        the attribute
      • calcGraph

        public void calcGraph​(int panelWidth,
                              int panelHeight)
        Recalculates the barplot or histogram to display, required usually when the attribute is changed or the component is resized.
      • getToolTipText

        public String getToolTipText​(MouseEvent ev)
        Returns "<nominal value> [<nominal value count>]" if displaying a bar plot and mouse is on some bar. If displaying histogram then it
      • returns "count <br> [<bars Range>]" if mouse is on the first bar.
      • returns "count <br> (<bar's Range>]" if mouse is on some bar other than the first one.
      • Otherwise it returns ""
Overrides:
getToolTipText in class JComponent
Parameters:
ev - The mouse event