# Class: Axis

## Highcharts. Axis

#### new Axis(chart, userOptions)

  Create a new axis object. Called internally when instantiating a new chart or adding axes by Highcharts.Chart#addAxis.

  A chart can have from 0 axes (pie chart) to multiples. In a normal, single series cartesian chart, there is one X axis and one Y axis.

  The X axis or axes are referenced by Highcharts.Chart.xAxis, which is an array of Axis objects. If there is only one axis, it can be referenced through `chart.xAxis[0]`, and multiple axes have increasing indices. The same pattern goes for Y axes.

  If you need to get the axes from a series object, use the `series.xAxis` and `series.yAxis` properties. These are not arrays, as one series can only be associated to one X and one Y axis.

  A third way to reference the axis programmatically is by `id`. Add an `id` in the axis configuration options, and get the axis by Highcharts.Chart#get.

  Configuration options for the axes are given in options.xAxis and options.yAxis.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `chart` | Highcharts.Chart | The Chart instance to apply the axis on.
  `userOptions` | Highcharts.AxisOptions | Axis options

### Members

#### <readonly> categories :Array.<string>

  If categories are present for the axis, names are used instead of numbers for that axis.

  Since Highcharts 3.0, categories can also be extracted by giving each point a name and setting axis type to `category`. However, if you have multiple series, best practice remains defining the `categories` array.

  ##### Type:

  - Array.<string>
  See also:

    - xAxis.categories

#### chart :Highcharts.Chart

  The Chart that the axis belongs to.

  ##### Type:

  - Highcharts.Chart

#### coll :string

  The collection where the axis belongs, for example `xAxis`, `yAxis` or `colorAxis`. Corresponds to properties on Chart, for example Highcharts.Chart.xAxis.

  ##### Type:

  - string

#### crosshair :boolean|Highcharts.AxisCrosshairOptions

  The processed crosshair options.

  ##### Type:

  - boolean | Highcharts.AxisCrosshairOptions

#### horiz :boolean|undefined

  Whether the axis is horizontal.

  ##### Type:

  - boolean | undefined

#### isXAxis :boolean|undefined

  Whether the axis is the x-axis.

  ##### Type:

  - boolean | undefined

#### len :number

  The length of the axis in terms of pixels.

  ##### Type:

  - number

#### max :number|undefined

  The maximum value of the axis. In a logarithmic axis, this is the logarithm of the real value, and the real value can be obtained from Highcharts.Axis#getExtremes.

  ##### Type:

  - number | undefined

#### min :number|undefined

  The minimum value of the axis. In a logarithmic axis, this is the logarithm of the real value, and the real value can be obtained from Highcharts.Axis#getExtremes.

  ##### Type:

  - number | undefined

#### minorTicks :Highcharts.Dictionary.<Highcharts.Tick>

  List of minor ticks mapped by position on the axis.

  ##### Type:

  - Highcharts.Dictionary.<Highcharts.Tick>
  See also:
    - Highcharts.Tick

#### options :Highcharts.AxisOptions

  Current options for the axis after merge of defaults and user's options.

  ##### Type:

  - Highcharts.AxisOptions

#### pos :number

  The position of the axis in terms of pixels, compared to the chart edge. In a horizontal axis it is the same as `chart.plotLeft` unless the axis is explicitly positioned, and in a default vertical axis it is the same as `chart.plotTop`.

  ##### Type:

  - number

#### reversed :boolean

  Whether the axis is reversed. Based on the `axis.reversed`, option, but inverted charts have reversed xAxis by default.

  ##### Type:

  - boolean

#### series :Array.<Highcharts.Series>

  All series associated to the axis.

  ##### Type:

  - Array.<Highcharts.Series>

#### side :number

  The side on which the axis is rendered. 0 is top, 1 is right, 2 is bottom and 3 is left.

  ##### Type:

  - number

#### tickPositions :Highcharts.AxisTickPositionsArray|undefined

  Contains the current positions that are laid out on the axis. The positions are numbers in terms of axis values. In a category axis they are integers, in a datetime axis they are also integers, but designating milliseconds.

  This property is read only - for modifying the tick positions, use the `tickPositioner` callback or [axis.tickPositions( https://api.highcharts.com/highcharts/xAxis.tickPositions) option instead.

  ##### Type:

  - Highcharts.AxisTickPositionsArray | undefined

#### ticks :Highcharts.Dictionary.<Highcharts.Tick>

  List of major ticks mapped by position on axis.

  ##### Type:

  - Highcharts.Dictionary.<Highcharts.Tick>
  See also:
    - Highcharts.Tick

#### userOptions :Highcharts.AxisOptions

  User's options for this axis without defaults.

  ##### Type:

  - Highcharts.AxisOptions

### Methods

#### addPlotBand(options)

  Add a plot band after render time.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `options` | Highcharts.AxisPlotBandsOptions | A configuration object for the plot band, as defined in xAxis.plotBands.

  ##### Returns:

  Highcharts.PlotLineOrBand | undefined .

  The added plot band, or `undefined` if the options are not valid.

  ##### Try it

  - Toggle the plot band from a button.

#### addPlotLine(options)

  Add a plot line after render time.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `options` | Highcharts.AxisPlotLinesOptions | A configuration object for the plot line, as defined in xAxis.plotLines.

  ##### Returns:

  Highcharts.PlotLineOrBand | undefined .

  The added plot line, or `undefined` if the options are not valid.

  ##### Try it

  - Toggle the plot line from a button.

#### addTitle( [display])

  Adds the title defined in axis.options.title.

  ##### Parameters:

  Name | Type | Argument | Description
  --- | --- | --- | ---
  `display` | boolean | <optional> | Whether or not to display the title.

#### defaultLabelFormatter(this)

  The default label formatter. The context is a special config object for the label. In apps, use the labels.formatter instead, except when a modification is needed.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `this` | Highcharts.AxisLabelsFormatterContextObject | Formatter context of axis label.

  ##### Returns:

  string .

  The formatted label content.

#### drawCrosshair( [e] [, point])

  Internal function to draw a crosshair.

  ##### Parameters:

  Name | Type | Argument | Description
  --- | --- | --- | ---
  `e` | Highcharts.PointerEventObject | <optional> | The event arguments from the modified pointer event, extended with `chartX` and `chartY`
  `point` | Highcharts.Point | <optional> | The Point object if the crosshair snaps to points.

  ##### Fires:

  - Highcharts.Axis#event:afterDrawCrosshair
  - Highcharts.Axis#event:drawCrosshair

#### drilldownCategory(x [, originalEvent])

  Drill down to a given category. This is the same as clicking on an axis label. If multiple series with drilldown are present, all will drill down to the given category.

  See also `Point.doDrilldown` for drilling down on a single point instance.

  ##### Parameters:

  Name | Type | Argument | Description
  --- | --- | --- | ---
  `x` | number |  | The index of the category
  `originalEvent` | global.MouseEvent | <optional> | The original event, used internally.

  ##### Requires:

  - module:modules/drilldown

  ##### Try it

  - Programmatic drilldown.

#### getExtremes()

  Get the current extremes for the axis.

  ##### Returns:

  Highcharts.ExtremesObject .

  An object containing extremes information.

  ##### Try it

  - Report extremes by click on a button.

#### getLinePath(lineWidth)

  Internal function to get the path for the axis line. Extended for polar charts.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `lineWidth` | number | The line width in pixels.

  ##### Returns:

  Highcharts.SVGPathArray .

  The SVG path definition in array form.

#### getLinearTickPositions(tickInterval, min, max)

  Internal function to get the tick positions of a linear axis to round values like whole tens or every five.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `tickInterval` | number | The normalized tick interval.
  `min` | number | Axis minimum.
  `max` | number | Axis maximum.

  ##### Returns:

  Array.<number> .

  An array of axis values where ticks should be placed.

#### getMinorTickInterval()

  Resolve the new minorTicks/minorTickInterval options into the legacy loosely typed minorTickInterval option.

  ##### Returns:

  number | "auto" | null .

  Legacy option

#### getMinorTickPositions()

  Internal function to return the minor tick positions. For logarithmic axes, the same logic as for major ticks is reused.

  ##### Returns:

  Array.<number> .

  An array of axis values where ticks should be placed.

#### getPlotBandPath(from, to, options)

  Internal function to create the SVG path definition for a plot band.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `from` | number | The axis value to start from.
  `to` | number | The axis value to end on.
  `options` | Highcharts.AxisPlotBandsOptions | Highcharts.AxisPlotLinesOptions | The plotBand or plotLine configuration object.

  ##### Returns:

  Highcharts.SVGPathArray .

  The SVG path definition in array form.

#### getPlotLinePath(options)

  Create the path for a plot line that goes from the given value on this axis, across the plot to the opposite side. Also used internally for grid lines and crosshairs.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `options` | Highcharts.AxisPlotLinePathOptionsObject | Options for the path.

  ##### Returns:

  Highcharts.SVGPathArray | null .

  The SVG path definition for the plot line.

#### getThreshold(threshold)

  Get the zero plane either based on zero or on the min or max value. Used in bar and area plots.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `threshold` | number | The threshold in axis values.

  ##### Returns:

  number .

  The translated threshold position in terms of pixels, and corrected to stay within the axis bounds.

#### hasData()

  Return true if the axis has associated data.

  ##### Returns:

  boolean .

  True if the axis has associated visible series and those series have either valid data points or explicit `min` and `max` settings.

#### hideCrosshair()

  Hide the crosshair if visible.

#### init(chart, userOptions)

  Overridable function to initialize the axis.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `chart` | Highcharts.Chart | The Chart instance to apply the axis on.
  `userOptions` | AxisOptions | Axis options.

  See also:
    - Highcharts.Axis

  ##### Fires:

  - Highcharts.Axis#event:afterInit
  - Highcharts.Axis#event:init

#### remove( [redraw])

  Remove the axis from the chart.

  ##### Parameters:

  Name | Type | Argument | Default | Description
  --- | --- | --- | --- | ---
  `redraw` | boolean | <optional> | true | Whether to redraw the chart following the remove.

  ##### Try it

  - Add and remove axes.

#### removePlotBand(id)

  Remove a plot band by its id.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `id` | string | The plot band's `id` as given in the original configuration object or in the `addPlotBand` option.

  ##### Try it

  - Remove plot band by id.
  - Toggle the plot band from a button.

#### removePlotLine(id)

  Remove a plot line by its id.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `id` | string | The plot line's `id` as given in the original configuration object or in the `addPlotLine` option.

  ##### Try it

  - Remove plot line by id.
  - Toggle the plot line from a button.

#### renderLine()

  Render the axis line. Called internally when rendering and redrawing the axis.

#### renderMinorTick(pos, slideIn)

  Render a minor tick into the given position. If a minor tick already exists in this position, move it.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `pos` | number | The position in axis values.
  `slideIn` | boolean | Whether the tick should animate in from last computed position

#### renderTick(pos, i, slideIn)

  Render a major tick into the given position. If a tick already exists in this position, move it.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `pos` | number | The position in axis values.
  `i` | number | The tick index.
  `slideIn` | boolean | Whether the tick should animate in from last computed position

#### setCategories(categories [, redraw])

  Set new axis categories and optionally redraw.

  ##### Parameters:

  Name | Type | Argument | Default | Description
  --- | --- | --- | --- | ---
  `categories` | Array.<string> |  |  | The new categories.
  `redraw` | boolean | <optional> | true | Whether to redraw the chart.

  ##### Try it

  - Set categories by click on a button.

#### setExtremes( [min] [, max] [, redraw] [, animation] [, eventArguments])

  Set the minimum and maximum of the axes after render time. If the `startOnTick` and `endOnTick` options are true, the minimum and maximum values are rounded off to the nearest tick. To prevent this, these options can be set to false before calling setExtremes. Also, setExtremes will not allow a range lower than the `minRange` option, which by default is the range of five points.

  ##### Parameters:

  Name | Type | Argument | Default | Description
  --- | --- | --- | --- | ---
  `min` | number | string | <optional> |  | The new minimum value. For datetime axes, date strings are accepted.
  `max` | number | string | <optional> |  | The new maximum value. For datetime axes, date strings are accepted.
  `redraw` | boolean | <optional> | true | Whether to redraw the chart or wait for an explicit call to Highcharts.Chart#redraw
  `animation` | boolean | Partial.<Highcharts.AnimationOptionsObject> | <optional> | true | Enable or modify animations.
  `eventArguments` | * | <optional> |  | Arguments to be accessed in event handler.

  ##### Fires:

  - Highcharts.Axis#event:setExtremes

  ##### Try it

  - Set extremes from a button.
  - Set extremes on a datetime axis.
  - Set extremes off ticks.
  - Set extremes in Highcharts Stock.

#### setTitle(titleOptions [, redraw])

  Update the axis title by options after render time.

  ##### Parameters:

  Name | Type | Argument | Default | Description
  --- | --- | --- | --- | ---
  `titleOptions` | Highcharts.AxisTitleOptions |  |  | The additional title options.
  `redraw` | boolean | <optional> | true | Whether to redraw the chart after setting the title.

  ##### Try it

  - Set a new Y axis title.

#### toPixels(value [, paneCoordinates])

  Translate a value in terms of axis units into pixels within the chart.

  ##### Parameters:

  Name | Type | Argument | Default | Description
  --- | --- | --- | --- | ---
  `value` | number | string |  |  | A value in terms of axis units. For datetime axes, a timestamp or date/time string is accepted.
  `paneCoordinates` | boolean | <optional> | false | Whether to return the pixel coordinate relative to the chart or just the axis/pane itself.

  ##### Returns:

  number .

  Pixel position of the value on the chart or axis.

#### toValue(pixel [, paneCoordinates])

  Translate a pixel position along the axis to a value in terms of axis units.

  ##### Parameters:

  Name | Type | Argument | Default | Description
  --- | --- | --- | --- | ---
  `pixel` | number |  |  | The pixel value coordinate.
  `paneCoordinates` | boolean | <optional> | false | Whether the input pixel is relative to the chart or just the axis/pane itself.

  ##### Returns:

  number .

  The axis value.

#### update(options [, redraw])

  Update an axis object with a new set of options. The options are merged with the existing options, so only new or altered options need to be specified.

  ##### Parameters:

  Name | Type | Argument | Default | Description
  --- | --- | --- | --- | ---
  `options` | Highcharts.AxisOptions |  |  | The new options that will be merged in with existing options on the axis.
  `redraw` | boolean | <optional> | true | Whether to redraw the chart after the axis is altered. If doing more operations on the chart, it is a good idea to set redraw to false and call Highcharts.Chart#redraw after.

  ##### Try it

  - Axis update demo.