# sync-two-axes

Algorithm to sync/align two axes' ticks so that their intervals are 'nice'. If there are multiple 'nice' options, it should return the option with the largest tick count first.

Inspiration: https://stackoverflow.com/questions/8506881/nice-label-algorithm-for-charts-with-minimum-ticks/16363437#16363437

"[T]he "nicest" numbers in decimal are 1, 2, and 5, and all power-of-ten multiples of these numbers"

## Example

Imagine you have two data sets, both graphed on the same axis. The left, y1 axis, has a range of 0 to 200. The right, y2 axis, has a range of 0 to 50. For readability's sake, you want the tick marks across the two graphs to align on 'nice' numbers. That's where this algorithm comes in.

```
const y1 = {
min: 0,
max: 200,
};
const y2 = {
min: 0,
max: 50,
};
getAlignedTicksForTwoAxes(y1, y2);
```

Returns the following object:

```
{
tickCount: 10,
axis1TickInterval: 20,
axis2TickInterval: 5,
}
```

Which means there are 10 ticks across both axes, in intervals of 20 for y1 and intervals of 5 for y2.

You can also define *minTicks* (default 3) and *maxTicks* (default 10).

```
const minTicks = 15;
const maxTicks = 30;
getAlignedTicksForTwoAxes(y1, y2, minTicks, maxTicks); // None
```

Returns `'None'`

since it could not determine an alignment fitting those requirements.

## Development/Contributing

I, unfortunately, have decided to do this on windows.

I chose to use nvm-windows.

Current nvm latest: v18.6.0