# Axis

### Types

#### Scalar Axis

Axis scales are available in scalar axis.

```
scalar_axis.scale = ...
```

* Identity Scale (default)
* Log Scale
* Exponential Scale
* Custom Scale

#### DateTime Axis

\-

#### Categorical Axis

A categorical axis provides a center point and width.

The location and size of histogram bars are determined by the axis property.

***

### Tick Locators

A tick locator determines major ticks, minor ticks, and tick labels, and "nice numbers".

#### Wilkinson

#### Talbot

An extension of Wilkinson algorithm. It is described in "An Extension of Wilkinson’s Algorithm for Positioning Tick Labels on Axes".

#### Cryptowatch

A 2-level datetime axis motivated by Cryptowatch. This design reduces the amount of label text, making a clean look without losing the required level of details.

The below is an example of typical datetime labeling. "2020-05-" is unnecessarily repeated and the label space is dense. If there were more ticks, we would have overlapping labels or would have to skip some labels.

![Matplotlib](https://29846817-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fw6gfR46YgOL1YsdZtqqx%2Fuploads%2Fucg4WLsosZcoc9qiTe1W%2Fimage.png?alt=media\&token=c38c7965-2d79-45cb-a8d7-bebb8d088bcf)

On the other hand, 2-level layout has 2 rows of labels. The less important unit (2022-04-xx) is extracted out to the second level. The interval of the first level (5 hours) is determined from the current zoom state, label density, and datetime resolution.

![Cryptowatch Desktop](https://29846817-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fw6gfR46YgOL1YsdZtqqx%2Fuploads%2F93iNQ8d9aLZbkAT6TRBl%2Fimage.png?alt=media\&token=572f7ccc-efa3-44d0-976a-f78f7a3af02a)
