Package Layout

Class PamAxis

java.lang.Object
Layout.PamAxis
Direct Known Subclasses:
ClassifierHistoryTimeAxis, RepeatedAxis

public class PamAxis extends Object

Draws an axis on a Java Component.

PamAxis contains all the information needed to draw an axis, the actual drawing is generally called from the paintComponent function in the containing window.

for a good example, see PamAxisPanel which will automaticall draw four axis around a central plot.

Author:
Doug Gillespie
See Also:
  • Field Details

  • Constructor Details

    • PamAxis

      public PamAxis(int x1, int y1, int x2, int y2, double minVal, double maxVal, int tickPosition, String label, int labelPos, String format)
      Parameters:
      x1 - first x coordinate of axis
      y1 - first y coordinate of axis
      x2 - second x coordinate of axis
      y2 - second coordinate of axis
      minVal - minimum axis value
      maxVal - maximum axis value
      tickPosition - tick position (ABOVE_LEFT or BELOW_RIGHT)
      label - text for label (or null if no label)
      labelPos - Position of axis label (LABEL_NEAR_MAX, LABEL_NEAR_MIN or LABEL_NEAR_CENTRE)
      format - format for numbers printed on the display. This must be a standard format String such as "%d", "%f", "%3.1f", "%.2 seconds", etc.
    • PamAxis

      public PamAxis(int x1, int y1, int x2, int y2, double minVal, double maxVal, boolean aboveLeft, String label, String format)
      Parameters:
      x1 - x1
      y1 - y1
      x2 - x2
      y2 - y2
      minVal - min axis value
      maxVal - max axis value
      aboveLeft - above and / or to the left
      label - axis label
      format - format of numbers
  • Method Details

    • setPosition

      public void setPosition(int x1, int y1, int x2, int y2)
      Set the axis default coordinates
      Parameters:
      x1 -
      y1 -
      x2 -
      y2 -
    • setInterval

      public void setInterval(double interval)
      Set the interval between ticks. This is by default set to INTERVAL_AUTO whereby an interval is chosen so that there is a tick mark approximately every 100 pixels.
      Parameters:
      interval - the interval or INTERVAL_AUTO
    • setRange

      public void setRange(double minVal, double maxVal)
      Set the minimum and maximum values for the axis.
      Parameters:
      minVal -
      maxVal -
    • drawAxis

      public void drawAxis(Graphics g, int x1, int y1, int x2, int y2)
      Draw the axis in the graphics context g at the given position
      Parameters:
      g -
      x1 -
      y1 -
      x2 -
      y2 -
    • drawAxis

      public void drawAxis(Graphics g)
      Draw the axis in the Graphics Context g
      Parameters:
      g - graphics context to draw on
    • getAxisPoints

      public ArrayList<Point> getAxisPoints(boolean extraOne)
      Work out the coordinates of all tick marks.
      Parameters:
      extraOne -
      Returns:
      list of axis points.
    • drawGrid

      public void drawGrid(Graphics g, Dimension plotSize, int minorGrid)
      Draw a grid to go with the axis. Generally, the graphics handle for grid drawing will be some inner window sitting inside the window containing the axis.
      Parameters:
      g - Graphics context to draw on
      plotSize - size of the graphic
      minorGrid - draw a minor grid as well as lines at the main tick marks.
    • drawGrid

      public void drawGrid(Graphics g, Dimension plotSize, Insets insets, int minorGrid)
    • getExtent2

      public int getExtent2(Graphics g)
      Gets the dimension of the axis perpendicular to the direction of the tickmark - i.e. for a vertical axis, it's half the text height, for a horizontal axis it's half the typical string width.
      Parameters:
      g - graphics handle for component the axis is to be draw on
      Returns:
      axis extent in pixels
    • getExtent2

      public int getExtent2(Graphics g, String typicalString)
      Gets the dimension of the axis perpendicular to the direction of the tickmark - i.e. for a vertical axis, it's half the text height, for a horizontal axis it's half the typical string width.
      Parameters:
      g - graphics handle for component the axis is to be draw on
      typicalString - typical text string.
      Returns:
      Axis extent
    • getExtent

      public int getExtent(Graphics g)
      Gets the dimension of the axis parallel to the direction of the tickmark - i.e. the ticklength + the text height + the label height.
      Parameters:
      g - graphics handle for component the axis is to be draw on
      Returns:
      axis extent in pixels
    • getExtent

      public int getExtent(Graphics g, String typicalString)
      Gets the dimension of the axis parallel to the direction of the tickmark - i.e. the ticklength + the text height + the label height.
      Parameters:
      g - graphics handle the axis is being draw on
      typicalString - typical label string for a tick
      Returns:
      axisextent in pixels
    • isLogScale

      public boolean isLogScale()
    • setLogScale

      public void setLogScale(boolean logScale)
    • isDrawLine

      public boolean isDrawLine()
    • setDrawLine

      public void setDrawLine(boolean drawLine)
    • getFormat

      public String getFormat()
    • setFormat

      public void setFormat(String format)
      Set the format string for writing out numbers on the axis.
      Parameters:
      format - format string
    • setAutoFormat

      public void setAutoFormat(boolean isInteger)
      Automatically set the format of axis labels based on the types of numbers in there.
    • getAutoFormat

      public String getAutoFormat(boolean isInteger)
    • getAutoFormat

      public static String getAutoFormat(double minVal, double maxVal, boolean isInteger)
    • getNumDecPlaces

      public static int getNumDecPlaces(double value)
    • isIntegerFormat

      public boolean isIntegerFormat()
    • getLabel

      public String getLabel()
    • setLabel

      public void setLabel(String label)
    • getLabelPos

      public int getLabelPos()
    • setLabelPos

      public void setLabelPos(int labelPos)
    • getTickPosition

      public int getTickPosition()
    • setTickPosition

      public void setTickPosition(int tickPosition)
    • getMaxVal

      public double getMaxVal()
    • setMaxVal

      public void setMaxVal(double maxVal)
    • getMinVal

      public double getMinVal()
    • setMinVal

      public void setMinVal(double minVal)
    • getAutoLabelFormat

      public String getAutoLabelFormat()
      Work out the optimal format for the axis labels based on analysis of previously used axis labels.
      Returns:
      some kind of sensible format string !
    • getDefaultScaleEnd

      public static double getDefaultScaleEnd(double val, double otherVal)
    • setForceFirstVal

      public void setForceFirstVal(boolean forceFirstVal, double forcedFirstVal)
    • isLogTenthsScale

      public boolean isLogTenthsScale()
    • setLogTenthsScale

      public void setLogTenthsScale(boolean logTenthsScale)
    • getAxisValues

      public ArrayList<Double> getAxisValues()
    • getX1

      public int getX1()
    • setX1

      public void setX1(int x1)
    • getX2

      public int getX2()
    • setX2

      public void setX2(int x2)
    • getY1

      public int getY1()
    • setY1

      public void setY1(int y1)
    • getY2

      public int getY2()
    • setY2

      public void setY2(int y2)
    • getPosition

      public double getPosition(double dataValue)
      Get a distance along the axis within the bounds of the axis, i.e. generally within an inner panel drawn to the same bounds as the axis.

      The axis knows all about scale and can tell us the pixel value for any given data value.

      Parameters:
      dataValue -
      Returns:
      position in pixels along the axis for a given data value.
    • getOuterPosition

      public double getOuterPosition(double dataValue)
      To get a position in the context that the axis is drawn in, not the inner window relative to the axis. The axis knows all about scale and can tell us the pixel value for any given data value.
      Parameters:
      dataValue -
      Returns:
      position in pixels along the axis for a given data value.
    • getDataValue

      public double getDataValue(double position)
      Converts a position on the plot into a data value based on the axis max, min and scale.

      This is the exact compliment of getPosition()

      Parameters:
      position - position along the axis in pixels.
      Returns:
      data value.
    • isAllowScaleMultiples

      public boolean isAllowScaleMultiples()
    • setAllowScaleMultiples

      public void setAllowScaleMultiples(boolean allowScaleMultiples)
    • setAngleScales

      public void setAngleScales(boolean angleScales)
      Easy way to make scales end at 45, 90, 180, etc and step in sensible 45, 90, etc. steps.
      Parameters:
      angleScales -
    • isFractionalScale

      public boolean isFractionalScale()
    • setFractionalScale

      public void setFractionalScale(boolean fractionalScale)
    • getExtraAxisStartLabel

      public String getExtraAxisStartLabel()
      Returns:
      the extraAxStartLabel
    • setExtraAxisStartLabel

      public void setExtraAxisStartLabel(String extraAxStartLabel)
      Parameters:
      extraAxStartLabel - the extraAxStartLabel to set
    • getExtraAxisEndLabel

      public String getExtraAxisEndLabel()
      Returns:
      the extraAxisEndLabel
    • setExtraAxisEndLabel

      public void setExtraAxisEndLabel(String extraAxisEndLabel)
      Parameters:
      extraAxisEndLabel - the extraAxisEndLabel to set
    • isCrampLabels

      public boolean isCrampLabels()
      Cramped labels means that when drawing an axis, the end labels will be shifted to remain within the bounds of the axis itself.
      Returns:
      the crampLables
    • setCrampLabels

      public void setCrampLabels(boolean crampLabels)
      Cramped labels means that when drawing an axis, the end labels will be shifted to remain within the bounds of the axis itself.
      Parameters:
      crampLabels - the crampLables to set
    • overrideAxisColour

      public void overrideAxisColour(Color color)
      Overrides the standard axis color;
      Parameters:
      color - - null if default colour.