org.opensourcephysics.display
Class Histogram

java.lang.Object
  extended by javax.swing.table.AbstractTableModel
      extended by org.opensourcephysics.display.Histogram
All Implemented Interfaces:
java.io.Serializable, javax.swing.table.TableModel, Data, Drawable, Measurable

public class Histogram
extends javax.swing.table.AbstractTableModel
implements Measurable, Data

Histogram maps bin number to occurrences. Histogram is Drawable and can be rendered on a DrawingPanel. Histogram also implements TableModel and can be displayed in a JTable. By default, bins consist of (notation: [ inclusive, ) exclusive): ..., [-1,0), [0,1), [1,2), ...

Version:
1.1
Author:
Joshua Gould, Wolfgang Christian
See Also:
Serialized Form

Nested Class Summary
protected static class Histogram.HistogramLoader
          A class to save and load Dataset data in an XMLControl.
 
Field Summary
 boolean adjustForWidth
          Should the height be adjusted by bin width? Default is false.
protected  java.awt.Color binEdgeColor
          color of bins
protected  java.awt.Color binFillColor
          color of bins
protected  int binStyle
          style for drawing bins
static int DRAW_BIN
          draw bin from y min to top of bin
static int DRAW_POINT
          draw point at top of bin
 boolean logScale
          Should histogram be drawn on a log scale? Default is false.
 
Fields inherited from class javax.swing.table.AbstractTableModel
listenerList
 
Constructor Summary
Histogram()
          Histogram constructor.
 
Method Summary
 void append(double value)
          Appends a value with 1 occurence.
 void append(double[] values)
          Appends an array of values with 1 occurence.
 void append(double value, double numberOfoccurrences)
          Append a value with number of occurrences to the Histogram.
 void append(java.lang.String inputPathName)
          Appends values from an input file.
 void clear()
          Clears all data from this histogram and resets min and max values.
 void draw(DrawingPanel drawingPanel, java.awt.Graphics g)
          Draws this histogram in the drawing panel.
protected  void drawBin(DrawingPanel drawingPanel, java.awt.Graphics g, int binNumber, double occurrences)
          Draws a filled bin.
protected  void drawPoint(DrawingPanel drawingPanel, java.awt.Graphics g, int binNumber, double occurrences)
          Draws a point at the top of a bin.
 java.util.Map.Entry[] entries()
          Gets an array of bin number-occurrences pairs
 double getBinOffset()
          Gets the offset of the bins.
 double getBinWidth()
          Gets the width of a bin.
 java.lang.Class getColumnClass(int columnIndex)
          Gets the type of object for JTable entry.
 int getColumnCount()
          Gets the name of the colummn for rendering in a JTable
 java.lang.String getColumnName(int column)
          Gets the name of the colummn for rendering in a JTable
 java.util.ArrayList getComplexDatasets()
          Gets a list of complex datasets.
 double[][] getData2D()
          Gets a 2D array of data.
 double[][][] getData3D()
          Gets a 3D array of data.
 java.util.ArrayList getDatasets()
          Gets a list of datasets.
 double getLeftMostBinPosition(int binNumber)
          Method getLeftMostBinPosition
static XML.ObjectLoader getLoader()
          Returns the XML.ObjectLoader for this class.
 double[][] getLogPoints()
          Gets a data array containing both the bin centers and the values within the bins.
 java.lang.String getName()
          Gets the dataset name.
 double[][] getPoints()
          Gets a data array containing both the bin centers and the values within the bins.
 double getRightMostBinPosition(int binNumber)
          Method getRightMostBinPosition
 int getRowCount()
          Gets the number of rows for rendering in a JTable.
 java.lang.Object getValueAt(int row, int column)
          Gets a bin number or occurrences for bin number for rendering in a JTable.
 double getXMax()
          Gets the x world coordinate for the right hand side of this histogram.
 double getXMin()
          Gets the x world coordinate for the left hand side of this histogram.
 double[] getXPoints()
          Gets an array containing the bin centers.
 double getYMax()
          Gets the y world coordinate for the top of this histogram.
 double getYMin()
          Gets the y world coordinate for the bottom of this histogram.
 double[] getYPoints()
          Gets an array containing the values within the bins.
 int hashCode(double value)
          Computes the hash code (bin number) for the specified value
 boolean isMeasured()
          Gets the valid measure flag.
 void read(java.lang.String inputPathName)
          Reads a file and appends the data contained in the file to this Histogram.
 void setBarOffset(double _barOffset)
          Set the offset of the bars as a fraction of a bin width.
 void setBinColor(java.awt.Color binColor)
          Sets the bin color.
 void setBinColor(java.awt.Color fillColor, java.awt.Color edgeColor)
          Sets the bin's fill and edge colors.
 void setBinOffset(double _binOffset)
          Sets the offset of the bins.
 void setBinStyle(int style)
          Sets the style for drawing this histogram.
 void setBinWidth(double _binWidth)
          Sets the width of a bin.
 void setDiscrete(boolean _discrete)
          Sets the discrete flag.
 void setName(java.lang.String name)
          Sets a name that can be used to identify the dataset.
 void setNormalizedToOne(boolean b)
          Normalizes the occurrences in this histogram to one.
 void setXYColumnNames(java.lang.String _xColumnName, java.lang.String _yColumnName)
          Sets the column names when rendering this histogram in a JTable.
 void setXYColumnNames(java.lang.String _xColumnName, java.lang.String _yColumnName, java.lang.String _name)
          Sets the column names when rendering this histogram in a JTable.
 java.lang.String toSortedString()
          Creates a string representation of this Histogram.
 java.lang.String toString()
          Creates a string representation of this Histogram.
 
Methods inherited from class javax.swing.table.AbstractTableModel
addTableModelListener, findColumn, fireTableCellUpdated, fireTableChanged, fireTableDataChanged, fireTableRowsDeleted, fireTableRowsInserted, fireTableRowsUpdated, fireTableStructureChanged, getListeners, getTableModelListeners, isCellEditable, removeTableModelListener, setValueAt
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

DRAW_POINT

public static final int DRAW_POINT
draw point at top of bin

See Also:
Constant Field Values

DRAW_BIN

public static final int DRAW_BIN
draw bin from y min to top of bin

See Also:
Constant Field Values

logScale

public boolean logScale
Should histogram be drawn on a log scale? Default is false.


adjustForWidth

public boolean adjustForWidth
Should the height be adjusted by bin width? Default is false.


binFillColor

protected java.awt.Color binFillColor
color of bins


binEdgeColor

protected java.awt.Color binEdgeColor
color of bins


binStyle

protected int binStyle
style for drawing bins

Constructor Detail

Histogram

public Histogram()
Histogram constructor.

Method Detail

read

public void read(java.lang.String inputPathName)
          throws java.io.IOException
Reads a file and appends the data contained in the file to this Histogram. The format of the file is bins \t occurrences. Lines beginning with # and empty lines are ignored.

Parameters:
inputPathName - A pathname string.
Throws:
java.io.IOException - Description of the Exception

toSortedString

public java.lang.String toSortedString()
Creates a string representation of this Histogram. The bins are displayed in ascending order. The format of this string is bin number \t occurrences. Each bin starts on a new line.

Returns:
A String with the number of occurrences for each bin.
See Also:
toString()

toString

public java.lang.String toString()
Creates a string representation of this Histogram. The format is bin number\t occurrences. Each new bin starts on a new line.

Overrides:
toString in class java.lang.Object
Returns:
A String with the number of occurrences for each bin.

hashCode

public int hashCode(double value)
Computes the hash code (bin number) for the specified value

Parameters:
value -
Returns:
the hash code

append

public void append(double value,
                   double numberOfoccurrences)
Append a value with number of occurrences to the Histogram.

Parameters:
value -
numberOfoccurrences -

append

public void append(double value)
Appends a value with 1 occurence.

Parameters:
value -

append

public void append(java.lang.String inputPathName)
            throws java.io.IOException
Appends values from an input file. Each value is separated by a \n

Parameters:
inputPathName - A pathname string.
Throws:
java.io.IOException - Description of the Exception

append

public void append(double[] values)
Appends an array of values with 1 occurence.

Parameters:
values -

draw

public void draw(DrawingPanel drawingPanel,
                 java.awt.Graphics g)
Draws this histogram in the drawing panel.

Specified by:
draw in interface Drawable
Parameters:
drawingPanel -
g -

clear

public void clear()
Clears all data from this histogram and resets min and max values.


entries

public java.util.Map.Entry[] entries()
Gets an array of bin number-occurrences pairs

Returns:
The entries.

setBinStyle

public void setBinStyle(int style)
Sets the style for drawing this histogram. Options are DRAW_POINT, which draws a point at the top of the bin, and DRAW_BIN which draws the entire bin down to the x axis. Default is DRAW_BIN.

Parameters:
style -

setDiscrete

public void setDiscrete(boolean _discrete)
Sets the discrete flag.

Parameters:
_discrete - true<\code> if bins are discrete, false<\code> if bins are continuous.

setBinOffset

public void setBinOffset(double _binOffset)
Sets the offset of the bins. Default is 0.

Parameters:
_binOffset -

setBarOffset

public void setBarOffset(double _barOffset)
Set the offset of the bars as a fraction of a bin width. The offset is the amount by which this histogram is shifted to the right, so that it peeks out from behind later histograms when displayed in a DrawingPanel.

Parameters:
_barOffset - The new barOffset value

setBinColor

public void setBinColor(java.awt.Color binColor)
Sets the bin color.

Parameters:
binColor -

setBinColor

public void setBinColor(java.awt.Color fillColor,
                        java.awt.Color edgeColor)
Sets the bin's fill and edge colors. If the fill color is null the bin is not filled.

Parameters:
fillColor -
edgeColor -

setBinWidth

public void setBinWidth(double _binWidth)
Sets the width of a bin.

Parameters:
_binWidth -

setName

public void setName(java.lang.String name)
Sets a name that can be used to identify the dataset.

Parameters:
name - String

getName

public java.lang.String getName()
Gets the dataset name.

Returns:
String

setXYColumnNames

public void setXYColumnNames(java.lang.String _xColumnName,
                             java.lang.String _yColumnName)
Sets the column names when rendering this histogram in a JTable.

Parameters:
_binColumnName -
_yColumnName -

setXYColumnNames

public void setXYColumnNames(java.lang.String _xColumnName,
                             java.lang.String _yColumnName,
                             java.lang.String _name)
Sets the column names when rendering this histogram in a JTable.

Parameters:
_binColumnName -
_yColumnName -
_name - String the name of the histogram

setNormalizedToOne

public void setNormalizedToOne(boolean b)
Normalizes the occurrences in this histogram to one.

Parameters:
b -

getBinWidth

public double getBinWidth()
Gets the width of a bin.

Returns:
The bin width.

getBinOffset

public double getBinOffset()
Gets the offset of the bins.

Returns:
The bin offset.

getXMin

public double getXMin()
Gets the x world coordinate for the left hand side of this histogram.

Specified by:
getXMin in interface Measurable
Returns:
xmin

getXMax

public double getXMax()
Gets the x world coordinate for the right hand side of this histogram.

Specified by:
getXMax in interface Measurable
Returns:
xmax

getYMin

public double getYMin()
Gets the y world coordinate for the bottom of this histogram.

Specified by:
getYMin in interface Measurable
Returns:
minimum y value

getYMax

public double getYMax()
Gets the y world coordinate for the top of this histogram.

Specified by:
getYMax in interface Measurable
Returns:
xmax

isMeasured

public boolean isMeasured()
Gets the valid measure flag. The measure is valid if this histogram is not empty.

Specified by:
isMeasured in interface Measurable
Returns:
true<\code> if measure is valid.

getColumnName

public java.lang.String getColumnName(int column)
Gets the name of the colummn for rendering in a JTable

Specified by:
getColumnName in interface javax.swing.table.TableModel
Overrides:
getColumnName in class javax.swing.table.AbstractTableModel
Parameters:
column - the column whose value is to be queried
Returns:
the name

getRowCount

public int getRowCount()
Gets the number of rows for rendering in a JTable.

Specified by:
getRowCount in interface javax.swing.table.TableModel
Returns:
the count

getColumnCount

public int getColumnCount()
Gets the name of the colummn for rendering in a JTable

Specified by:
getColumnCount in interface javax.swing.table.TableModel
Returns:
the name

getValueAt

public java.lang.Object getValueAt(int row,
                                   int column)
Gets a bin number or occurrences for bin number for rendering in a JTable.

Specified by:
getValueAt in interface javax.swing.table.TableModel
Parameters:
row - the row whose value is to be queried
column - the column whose value is to be queried
Returns:
the datum

getColumnClass

public java.lang.Class getColumnClass(int columnIndex)
Gets the type of object for JTable entry.

Specified by:
getColumnClass in interface javax.swing.table.TableModel
Overrides:
getColumnClass in class javax.swing.table.AbstractTableModel
Parameters:
columnIndex - the column whose value is to be queried
Returns:
the class

drawPoint

protected void drawPoint(DrawingPanel drawingPanel,
                         java.awt.Graphics g,
                         int binNumber,
                         double occurrences)
Draws a point at the top of a bin.

Parameters:
drawingPanel -
g -
binNumber -
occurrences -

drawBin

protected void drawBin(DrawingPanel drawingPanel,
                       java.awt.Graphics g,
                       int binNumber,
                       double occurrences)
Draws a filled bin.

Parameters:
drawingPanel -
g -
binNumber -
occurrences -

getXPoints

public double[] getXPoints()
Gets an array containing the bin centers.

Returns:
the bins

getYPoints

public double[] getYPoints()
Gets an array containing the values within the bins.

Returns:
the values of the bins

getPoints

public double[][] getPoints()
Gets a data array containing both the bin centers and the values within the bins.

Returns:
a double[index][2] array of data

getLogPoints

public double[][] getLogPoints()
Gets a data array containing both the bin centers and the values within the bins.

Returns:
a double[index][2] array of data

getLeftMostBinPosition

public double getLeftMostBinPosition(int binNumber)
Method getLeftMostBinPosition

Parameters:
binNumber -
Returns:
position

getRightMostBinPosition

public double getRightMostBinPosition(int binNumber)
Method getRightMostBinPosition

Parameters:
binNumber -
Returns:
position

getData2D

public double[][] getData2D()
Description copied from interface: Data
Gets a 2D array of data. The first column, double[0][] often contains x-values; Remaining columns often contain y values. May return null if data not yet generated or object does not support 2D data.

Specified by:
getData2D in interface Data
Returns:
double[][]

getData3D

public double[][][] getData3D()
Description copied from interface: Data
Gets a 3D array of data. May return null if data not yet generated or object does not support 3D data.

Specified by:
getData3D in interface Data
Returns:
double[][][]

getDatasets

public java.util.ArrayList getDatasets()
Description copied from interface: Data
Gets a list of datasets. May return null if data not yet generated or object does not support Datasets.

Specified by:
getDatasets in interface Data
Returns:
list of Datasets

getComplexDatasets

public java.util.ArrayList getComplexDatasets()
Description copied from interface: Data
Gets a list of complex datasets. May return null if data not yet generated or object does not support ComplexDatasets.

Specified by:
getComplexDatasets in interface Data
Returns:
list of ComplexDatasets

getLoader

public static XML.ObjectLoader getLoader()
Returns the XML.ObjectLoader for this class.

Returns:
the object loader