Line Series Microseconds

This example shows how to display high-resolution data - for example, measurements in microseconds precision.

When displaying high-resolution data there is a need to do some scaling to the data before adding it to a series.
LightningChart JS Axis is limited by floating point precision so when using really small or really large values there is a need to scale the values to be closer to 0.

const dataScaleX = 1 * Math.pow( 1000, 3 ) // 1 us
const renderData = ( data ) => {
    // Add data.
    lineSeries.add( data.map( p => ({ x: p.x * dataScaleX, y: p.y }) ) )
}

When the data is scaled closer to 0 then the LightningChart JS Axis is able to function properly but the values shown in the auto-cursor would be incorrect as it would show the scaled value, not the original. This can be fixed by setting a formatting function to the axis tick strategy.

lineSeries.axisX
    .setTickStrategy( AxisTickStrategies.Numeric, ( strategy ) => strategy
        // Format ticks with units.
        .setFormattingFunction( timeScaled =>
            Math.round( timeScaled ) + ' μs'
        )
    )

Alternatively if the original value would be preferred then the scaling could be undone.

lineSeries.axisX
    .setTickStrategy( AxisTickStrategies.Numeric, ( strategy ) => strategy
        .setFormattingFunction( timeScaled =>
            timeScaled/dataScaleX
        )
    )