Class ChartXY<CursorResultTableBackgroundType>

Chart type for visualizing data between two dimensions, X and Y. It has built-in Axis functionality, and supports a large set of series types.

ChartXY can be created in two different ways - to learn more about creation time configuration of ChartXY, please refer to:

ChartXY features

  1. Axes

ChartXY always has at least one X and Y axes.

The default Axis can be referenced with getDefaultAxisX and getDefaultAxisY. See Axis for features of axis.

ChartXY doesn't have a limit on number of axes. Additional axes can be created with addAxisX and addAxisY. Multiple Axes can be stacked on top of another, and axes can be positioned on either side of the chart (left, right, top, bottom, see AxisOptions).

  1. Series

ChartXY supports a variety of different series types, each with their own method of data visualization. Series are created with ChartXY.add...Series methods, for example:

When created, a series is always attached to a pair of X and Y Axes. The Axes can be specified by user, or the chart default Axes will be used.

  1. Cursor

ChartXY has built-in cursor functionality for displaying data on user interaction above charts. This can be controlled using:

  1. LegendBox

ChartXY has built-in legend box functionality for listing the series names in a user interface. The legend box also provides additional logic, like hiding selected series by clicking on the legend box, and visualizing color look-up tables (LUT) in applications where they are used.

Legend box is added using addLegendBox.

  1. Title

ChartXY has a built-in title component, which can be configured using setTitle.

  1. Backgrounds

ChartXY contains two separate background components:

  1. UI Elements

Custom UI elements can be placed on ChartXY in same way as all other charts, using addUIElement.

Other APIs worthy of mention:

  • Empty space around ChartXY can be configured with setPadding.
  • Additional margin around chart title can be configured with setTitleMargin.
  • All animations can be conveniently controlled with setAnimationsEnabled.
  • ChartXY can be removed permanently with dispose.
  • Some useful events that can be subscribed to:
    • Resize events (ChartXY.onResize).
    • Background events (ChartXY.onBackgroundMouseMove).
    • Series Background events (ChartXY.onSeriesBackgroundMouseMove).

Type Parameters

Hierarchy

Implements

Properties

Accessors

Methods

addAreaRangeSeries addAreaSeries addAxisX addAxisY addBoxSeries addCursor addEllipseSeries addEventListener addHeatmapGridSeries addHeatmapScrollingGridSeries addLegendBox addLineSeries addOHLCSeries addOnScreenMenu addPointLineAreaSeries addPointLineSeries addPointSeries addPolygonSeries addRectangleSeries addSegmentSeries addSplineSeries addStepSeries addTextSeries addUIElement clearPreviousZoomStateHistory dispose forEachAxis forEachAxisX forEachAxisY getAnimationsEnabled getAxes getBackgroundFillStyle getBackgroundStrokeStyle getCursor getCursorEnabledDuringAxisAnimation getCursorFormatting getCursorMode getDefaultAxes getDefaultAxisX getDefaultAxisY getIsInView getLayout getLegendBoxes getMinimumSize getPadding getSeries getSeriesBackgroundEffect getSeriesBackgroundFillStyle getSeriesBackgroundStrokeStyle getSizePixels getTheme getTitle getTitleEffect getTitleFillStyle getTitleFont getTitleMargin getTitlePosition getTitleRotation getTitleShadow getTitleSize getUserInteractions getZoomingRectangleFillStyle getZoomingRectangleStrokeStyle isDisposed pan removeEventListener restorePreviousZoomState saveToFile setAnimationsEnabled setBackgroundFillStyle setBackgroundStrokeStyle setCursor setCursorEnabledDuringAxisAnimation setCursorFormatting setCursorMode setCustomCursor setPadding setSeriesBackgroundEffect setSeriesBackgroundFillStyle setSeriesBackgroundStrokeStyle setSeriesHighlightOnHover setTitle setTitleEffect setTitleFillStyle setTitleFont setTitleMargin setTitlePosition setTitleRotation setTitleShadow setUserInteractions setZoomingRectangleFillStyle setZoomingRectangleStrokeStyle solveNearest swapAxes translateCoordinate zoom

Properties

_isPanelResized: boolean = true

Flag that is set whenever Panel or any scale is resized.

Will be handled before plot to update scale and trigger resize event just once per frame.

background: Eventer<LCJSInteractionEventMap, any> = ...

Interface for attaching listeners to user interaction events (click, pointerenter, etc.) on chart background.

 // Example syntax
chart.background.addEventListener('click', (event) => {
console.log(event)
})

For syntax examples, refer to EventInterface. Available event keys are listed under LCJSInteractionEventMap

Please note that many chart types have a separate "series background" (area enclosed by axes), which has its own separate events. This is accessed via seriesBackground property.

coordsClient: "client" = 'client'

Selector for "client" Coordinate System.

This references the coordinate system used in HTML. It starts at top left of the web page and is measured in pixels. For example, { x: 100, y: 20 } corresponds to 100 pixels from left and 20 pixels from top.

JavaScript events are tracked and HTML elements are positioned in the client coordinate system.

This selector can be used for translating client coordinates to other coordinate systems and vice versa. For example, in order to:

  • Position LCJS UI elements in client coordinates
  • Find client coordinate that matches a location along LCJS Axis or Chart.
  • etc.

See translateCoordinate for more detailed use case information and example usage.

coordsRelative: "relative" = 'relative'

Selector for "relative" Coordinate System.

This coordinate system is relative to the bottom left corner of the Control (chart/dashboard/etc.), and is measured as pixels. For example, { x: 100, y: 20 } corresponds to 100 pixels from left and 20 pixels from bottom.

This selector can be used for two purposes:

Positioning LCJS UI elements in pixels:

 // Position UI element in pixels by supplying `Control.coordsRelative` as its positioning system.
const textBox = Control.addUIElement(UIElementBuilders.TextBox, Control.coordsRelative)
.setOrigin(UIOrigins.LeftBottom)
.setPosition({ x: 100, y: 20 })

Translations between coordinate systems:

Use with translateCoordinate method to translate coordinates from "relative" to another coordinate system.

engine: PublicEngine

Interface for end user API of the LCJS engine. It provides some useful capabilities over the area enclosed by a single LCJS context (which can be just a single chart, or a Dashboard with several charts).

removePanel: ((panel: Panel) => void)

Type declaration

    • (panel: Panel): void
    • Parameters

      Returns void

seriesBackground: Eventer<LCJSInteractionEventMap, any> = ...

Interface for attaching listeners to user interaction events (click, pointerenter, etc.) on chart series background (area enclosed by axes).

 // Example syntax
chart.seriesBackground.addEventListener('click', (event) => {
console.log(event)
})

For more syntax examples, refer to EventInterface. Available event keys are listed under LCJSInteractionEventMap

title: Eventer<LCJSInteractionEventMap, any> = ...

Interface for attaching listeners to user interaction events (click, pointerenter, etc.) on chart title.

 // Example syntax
chart.title.addEventListener('click', (event) => {
console.log(event)
})

For syntax examples, refer to EventInterface. Available event keys are listed under LCJSInteractionEventMap

uiScale: LinearScaleXY

Scale for panel area in percentages (0-100).

While it is not functionally equal to this, using coordsRelative coordinate system is preferred (more confidence for long term support).

Accessors

  • get coordsAxis(): CoordinateSystemAxis
  • Selector for default Axis Coordinate System, measured along the active default X and Y axes of the chart.

    This is a convenience selector that is equal to following declaration:

     { x: ChartXY.getDefaultAxisX(), y: ChartXY.getDefaultAxisY() }
    

    This selector can be used for translating Axis coordinates to other coordinate systems and vice versa. For example, in order to:

    • Position LCJS UI elements in Axis coordinates
    • Find client coordinate that matches an X and Y location along the Axes
    • Translating user click event location to a pair of Axes
    • etc.

    See translateCoordinate for more detailed use case information and example usage.

    Returns CoordinateSystemAxis

Methods

  • Method for adding a new AreaRangeSeries to the chart. This series type is used for visualizing bands of data between two curves of data. AreaRangeSeries is optimized for large amounts of data - here are some reference specs to give an idea:

    • A static data set in millions range is rendered in a matter of seconds.
    • With streaming data, tens of thousands data points can be streamed in every second, while retaining an interactive document.

    To learn more about its features and usage, refer to AreaRangeSeries.

    Readonly configuration:

    Some properties of AreaRangeSeries can only be configured when it is created. These arguments are all optional, and are wrapped in a single object parameter:

     // Example,
    const series = ChartXY.addAreaRangeSeries({
    // Specify non-default X Axis to attach series to.
    xAxis: myNonDefaultAxisX
    })

    To learn about available properties, refer to AreaRangeSeriesOptions.

    Returns

    New series.

    Parameters

    • Optional options: AreaRangeSeriesOptions

      Optional object with readonly configuration arguments for AreaRangeSeries.

    Returns AreaRangeSeries

  • Method for adding a new AreaSeries to the chart. This series type is used for visualizing area between a static base line and supplied curve data. AreaSeries is optimized for large amounts of data - here are some reference specs to give an idea:

    • A static data set in millions range is rendered in a matter of seconds.
    • With streaming data, tens of thousands data points can be streamed in every second, while retaining an interactive document.

    To learn more about its features and usage, refer to AreaSeries.

    Readonly configuration:

    Some properties of AreaSeries can only be configured when it is created. These arguments are all optional, and are wrapped in a single object parameter:

     // Example,
    const series = ChartXY.addAreaSeries({
    // Specify non-default X Axis to attach series to.
    xAxis: myNonDefaultAxisX
    })

    To learn about available properties, refer to AreaSeriesOptions.

    Return type:

    AreaSeries return type depends on supplied readonly configuration! Specifically, type.

    Configuration type Return series type
    undefined or omitted AreaSeriesPositive
    AreaSeriesTypes.Positive AreaSeriesPositive
    AreaSeriesTypes.Negative AreaSeriesNegative
    AreaSeriesTypes.Bipolar AreaSeriesBipolar

    NOTE: Using addPointLineAreaSeries is strongly recommended instead!

    Returns

    New series.

    Deprecated

    Deprecated in v6.1.0 in favour of addPointLineAreaSeries. For more information, see https://lightningchart.com/js-charts/docs/more-guides/beta-xy/

    Type Parameters

    Parameters

    • Optional options: AreaSeriesOptions<AreaType>

      Optional object with readonly configuration arguments for AreaSeries.

    Returns InstanceType<AreaType>

  • Method for adding a new BoxSeries to the chart. This series type is used for visualizing data groups through quartiles.

    To learn more about its features and usage, refer to BoxSeries.

    Readonly configuration:

    Some properties of BoxSeries can only be configured when it is created. These arguments are all optional, and are wrapped in a single object parameter:

     // Example,
    const series = ChartXY.addBoxSeries({
    // Specify non-default X Axis to attach series to.
    xAxis: myNonDefaultAxisX
    })

    To learn about available properties, refer to BoxSeriesOptions.

    Returns

    New series.

    Parameters

    • Optional options: BoxSeriesOptions

      Optional object with readonly configuration arguments for BoxSeries.

    Returns BoxSeries

  • Add manually controlled Cursor object. These have exactly same functions as built-in cursors but they can be freely controlled by application logic.

     const cursor = chart.addCursor()
    

    Styling works same as built-in cursors (e.g. setCursor).

    Position is set using setPosition method and displayed content using setResultTable(table => table.setContent(...)) For more details, see Developer documentation > Features > Cursor > Manual cursors

    Returns

    Cursor object.

    Type Parameters

    Parameters

    • cursorBuilder: CursorBuilderXY<ResultTableBackgroundType> = ...

      Builder for cursor. Can be used to tweak a handful of properties which can't be changed during runtime.

    Returns CursorXY<ResultTableBackgroundType>

  • Method for adding a new EllipseSeries to the chart. This series type visualizes a collection of ellipses.

    To learn more about its features and usage, refer to EllipseSeries.

    Readonly configuration:

    Some properties of EllipseSeries can only be configured when it is created. These arguments are all optional, and are wrapped in a single object parameter:

     // Example,
    const series = ChartXY.addEllipseSeries({
    // Specify non-default X Axis to attach series to.
    xAxis: myNonDefaultAxisX
    })

    To learn about available properties, refer to EllipseSeriesOptions.

    Returns

    New series.

    Parameters

    • Optional options: EllipseSeriesOptions

      Optional object with readonly configuration arguments for EllipseSeries.

    Returns EllipseSeries

  • Add callback function to be triggered when specified event is fired.

     // Example syntax
    object.addEventListener('click', (event) => {
    console.log(event)
    })

    Some classes also report extra information about the interacted object with the second parameter:

     // Most series share information about interacted data point
    series.addEventListener('click', (event, info) => {
    console.log(info)
    })

    Optional third parameter allows registering event handlers that will automatically remove themselves after first trigger:

     // Example this listener will only fire once
    object.addEventListener('click', (event) => {})

    Each class has its own list of supported events. Some events are from HTML standard (click, pointerdown, etc.), while others are own events from LightningChart JS (dispose, resize, etc.)

    To find what events are available, you can try following:

    • If your development environment has TypeScript enabled, just write addEventListener and see what possible event types the IDE suggests. These APIs are strongly typed, and even the callback event will be correctly typed.
    • Otherwise, open the class section in API documentation and check out which interface K type parameter extends.

    Type Parameters

    Parameters

    Returns void

  • Add a Series for visualizing a Heatmap Grid with a static column and grid count. Has API for fast modification of cell values.

    HeatmapGridSeries is optimized for massive amounts of data - here are some reference specs on average PC to give an idea:

    • Heatmap Chart with 1 million data points (1000x1000) is cold started in ~0.3 seconds.
    • Heatmap Chart with 1 million data points (1000x1000) is re-populated (change data set) in ~0.050 seconds.
    • Heatmap Chart with 16 million data points (4000x4000) is cold started in ~2.0 seconds.
    • Heatmap Chart with 16 million data points (4000x4000) is re-populated (change data set) in ~0.5 seconds.

    HeatmapGridSeries max data amount is entirely restricted by the client hardware RAM and more specifically amount of RAM usable by the context running LightningChart JS. If by increasing the amount of columns and rows you encounter suddenly weak performance, it is likely that there is not enough RAM memory available.

    To learn more about its features and usage, refer to HeatmapGridSeriesIntensityValues.

    Readonly configuration:

    Some properties of HeatmapSeries can only be configured when it is created. Some of these arguments are mandatory, while some are optional. They are wrapped in a single object parameter:

     // Example,
    const series = ChartXY.addHeatmapGridSeries({
    columns: 100,
    rows: 100
    })

    To learn about available properties, refer to HeatmapGridSeriesOptions.

    Heatmap data format is specified with heatmapDataType: 'intensity' property; in this case, each cell of the heatmap is associated with a numeric intensity value, which can be used in conjuction with a Color look up table (LUT).

    For scrolling heatmap grids, see addHeatmapScrollingGridSeries.

    Returns

    Heatmap Grid Series.

    Parameters

    Returns HeatmapGridSeriesIntensityValues

  • Add a Series for visualizing a Heatmap Grid, with API for pushing data in a scrolling manner (append new data on top of existing data).

    HeatmapScrollingGridSeries is optimized for massive amounts of data - here are some reference specs on average PC to give an idea:

    • Scrolling Heatmap Chart with 2 million incoming data points per second (rows: 2048, 1000 columns/s) runs consistently and smoothly with 60 FPS and no stuttering. CPU usage stays easily below 40%.
    • Scrolling Heatmap Chart with 8 million incoming data points per second (rows: 4096, 2000 columns/s) runs consistently and smoothly with 60 FPS and minor stuttering.

    HeatmapScrollingGridSeries max data amount is entirely restricted by the client hardware RAM and more specifically amount of RAM usable by the context running LightningChart JS. If performance suddenly plummets at some approximate data threshold, then it is likely that there is not enough RAM available. Use data cleaning configuration and suitable Axis intervals to adjust to your hardware limitations.

    To learn more about its features and usage, refer to HeatmapScrollingGridSeriesIntensityValues.

    Readonly configuration:

    Some properties of ScrollingHeatmapSeries can only be configured when it is created. Some of these arguments are mandatory, while some are optional. They are wrapped in a single object parameter:

     // Example,
    const series = ChartXY.addHeatmapGridSeries({
    resolution: 100
    })

    To learn about available properties, refer to HeatmapScrollingGridSeriesOptions.

    Heatmap data format is specified with heatmapDataType: 'intensity' property; in this case, each cell of the heatmap is associated with a numeric intensity value, which can be used in conjuction with a Color look up table (LUT).

    For static heatmap grids, see addHeatmapGridSeries.

    Returns

    Scrolling Heatmap Grid Series.

    Parameters

    Returns HeatmapScrollingGridSeriesIntensityValues

  • Add a legendbox.

    Legendbox is a type of UI element, that floats inside the chart/component it is created inside. It can be freely moved around with user interactions, as well as positioned in application code.

    The purpose of legendbox is to describe the series and other visual components of the chart, by displaying their names and colors. Hovering over a series' legendbox entry will highlight that series, and clicking on the entry will toggle that series' visibility.

    Legendbox alignment:

    Alignment of legendbox can be selected by supplying one of the available LegendBoxBuilders to addLegendBox:

     // Default (vertical) LegendBox.
    const legendBox = ChartXY.addLegendBox()

    // Horizontal LegendBox.
    const horizontalLegendBox = ChartXY.addLegendBox(LegendBoxBuilders.HorizontalLegendBox)

    Custom Legendbox positioning:

    By default LegendBoxes are placed on the right side, or bottom of the chart (depending on alignment).

    A custom location can be configured with UIElement API:

    Position coordinate system is specified when creating legendbox.

    1. LegendBox with default positioning coordinate system.
     addLegendBox( LegendBoxBuilders.VerticalLegendBox )
    // Position = [0, 100] as percentages.
    .setPosition({ x: 50, y: 50 })
    1. Position in pixel coordinate system.
     addLegendBox( LegendBoxBuilders.VerticalLegendBox, chart.coordsRelative )
    // Position = pixels.
    .setPosition({ x: 300, y: 100 })
    1. Position on Axes.
     addLegendBox( LegendBoxBuilders.VerticalLegendBox, { x: chartXY.getDefaultAxisX(), y: chartXY.getDefaultAxisY() } )
    // Position = Axis values.
    .setPosition({ x: 5, y: 5 })

    For more information on LegendBox features, and usage, see LegendBox.

    Returns

    LegendBox

    Parameters

    • Optional builder: UILegendBoxBuilder<InternalBackground>

      LegendBoxBuilder. If omitted, VerticalLegendBox will be selected. Use LegendBoxBuilders for selection.

    • Optional scale: UserScaleDefinition

      Optional parameter for altering the coordinate system used for positioning the LegendBox. Defaults to whole Chart in pixels.

    Returns LegendBox<UIBackground>

  • Method for adding a new LineSeries to the chart. This series type visualizes a list of Points (pair of X and Y coordinates), with a continuous stroke. LineSeries is optimized for massive amounts of data - here are some reference specs to give an idea:

    • A static data set in tens of millions range is rendered in a matter of seconds.
    • With streaming data, even millions of data points can be streamed in every second, while retaining an interactive document.

    To learn more about its features and usage, refer to LineSeries.

    Readonly configuration:

    Some properties of LineSeries can only be configured when it is created. These arguments are all optional, and are wrapped in a single object parameter:

     // Example,
    const lineSeries = ChartXY.addLineSeries({
    // Specify non-default X Axis to attach series to.
    xAxis: myNonDefaultAxisX
    })

    To learn about available properties, refer to LineSeriesOptions.

    NOTE: Using addPointLineAreaSeries is strongly recommended instead!

    Returns

    New series.

    Deprecated

    Deprecated in v6.1.0 in favour of addPointLineAreaSeries. For more information, see https://lightningchart.com/js-charts/docs/more-guides/beta-xy/

    Parameters

    • Optional options: LineSeriesOptions

      Optional object with readonly configuration arguments for LineSeries.

    Returns LineSeries

  • Method for adding a new OHLCSeries to the chart. This series type is used for visualizing trading figures in large quantities and/or with real-time data input.

    OHLC Series is only usable with a Trading license for LightningChart JS

    To learn more about its features and usage, refer to OHLCSeries.

    Readonly configuration:

    Some properties of OHLCSeries can only be configured when it is created. These arguments are all optional, and are wrapped in a single object parameter:

     // Example,
    const series = ChartXY.addOHLCSeries({
    // Specify non-default X Axis to attach series to.
    xAxis: myNonDefaultAxisX
    })

    To learn about available properties, refer to OHLCSeriesOptions.

    Returns

    New series.

    Type Parameters

    Parameters

    • Optional options: OHLCSeriesOptions<Type>

      Optional object with readonly configuration arguments for OHLCSeries.

    Returns InstanceType<Type>

  • Add series that can visualize any combination of Lines, Points and Area filling. Supports both real-time and static data visualization.

    Also supports different preprocessing options (step/spline/disabled).

    Some properties of PointLineAreaSeries can only be configured when it is created. These arguments are all optional, and are wrapped in a single object parameter:

     // Example,
    const series = ChartXY.addPointLineAreaSeries({
    // Specify non-default X Axis to attach series to.
    xAxis: myNonDefaultAxisX
    })

    To learn about available properties, refer to PointLineAreaSeriesOptions. Examples:

    Different data visualizations can be achieved simply by changing the style of the series.

     // Area series
    const series = ChartXY.addPointLineAreaSeries({ dataPattern: 'ProgressiveX' })
     // Point-Line series
    const series = ChartXY.addPointLineAreaSeries({ dataPattern: 'ProgressiveX' })
    .setAreaFillStyle(emptyFill)
     // Point series
    const series = ChartXY.addPointLineAreaSeries({ dataPattern: null })
    .setAreaFillStyle(emptyFill)
    .setStrokeStyle(emptyLine)
     // Step series
    const series = ChartXY.addPointLineAreaSeries({ dataPattern: 'ProgressiveX' })
    .setAreaFillStyle(emptyFill)
    .setCurvePreprocessing({ type: 'step', step: 'middle' })
     // Spline series
    const series = ChartXY.addPointLineAreaSeries({ dataPattern: 'ProgressiveX' })
    .setAreaFillStyle(emptyFill)
    .setCurvePreprocessing({ type: 'spline' })

    More documentation can be found at:

    Parameters

    Returns PointLineAreaSeries

  • Method for adding a new PointLineSeries to the chart. This series type visualizes a list of Points (pair of X and Y coordinates), with a continuous stroke and configurable markers over each coordinate. PointLineSeries is optimized for massive amounts of data - here are some reference specs to give an idea:

    • A static data set in tens of millions range is rendered in a matter of seconds.
    • With streaming data, even millions of data points can be streamed in every second, while retaining an interactive document.

    To learn more about its features and usage, refer to PointLineSeries.

    Readonly configuration:

    Some properties of PointLineSeries can only be configured when it is created. These arguments are all optional, and are wrapped in a single object parameter:

     // Example,
    const pointLineSeries = ChartXY.addPointLineSeries({
    // Specify non-default X Axis to attach series to.
    xAxis: myNonDefaultAxisX
    })

    To learn about available properties, refer to PointLineSeriesOptions.

    NOTE: Using addPointLineAreaSeries is strongly recommended instead!

    Returns

    New series.

    Deprecated

    Deprecated in v6.1.0 in favour of addPointLineAreaSeries. For more information, see https://lightningchart.com/js-charts/docs/more-guides/beta-xy/

    Parameters

    • Optional options: PointLineSeriesOptions

      Optional object with readonly configuration arguments for PointLineSeries.

    Returns PointLineSeries

  • Method for adding a new PointSeries to the chart. This series type visualizes a list of Points (pair of X and Y coordinates), with configurable markers over each coordinate. PointSeries is optimized for massive amounts of data - here are some reference specs to give an idea:

    • A static data set in tens of millions range is rendered in a matter of seconds.
    • With streaming data, even millions of data points can be streamed in every second, while retaining an interactive document.

    To learn more about its features and usage, refer to PointSeries.

    Readonly configuration:

    Some properties of PointSeries can only be configured when it is created. These arguments are all optional, and are wrapped in a single object parameter:

     // Example,
    const pointSeries = ChartXY.addPointSeries({
    // Specify non-default X Axis to attach series to.
    xAxis: myNonDefaultAxisX
    })

    To learn about available properties, refer to PointSeriesOptions.

    Returns

    New series.

    Deprecated

    Deprecated in v6.1.0 in favour of addPointLineAreaSeries. For more information, see https://lightningchart.com/js-charts/docs/more-guides/beta-xy/

    Parameters

    Returns PointSeries

  • Method for adding a new PolygonSeries to the chart. This series type visualizes a collection of polygons.

    To learn more about its features and usage, refer to PolygonSeries.

    Readonly configuration:

    Some properties of PolygonSeries can only be configured when it is created. These arguments are all optional, and are wrapped in a single object parameter:

     // Example,
    const polygonSeries = ChartXY.addPolygonSeries({
    // Specify non-default X Axis to attach series to.
    xAxis: myNonDefaultAxisX
    })

    To learn about available properties, refer to PolygonSeriesOptions.

    Returns

    New series.

    Parameters

    • Optional options: PolygonSeriesOptions

      Optional object with readonly configuration arguments for PolygonSeries.

    Returns PolygonSeries

  • Method for adding a new RectangleSeries to the chart. This series type visualizes a collection of rectangles.

    To learn more about its features and usage, refer to RectangleSeries.

    Readonly configuration:

    Some properties of RectangleSeries can only be configured when it is created. These arguments are all optional, and are wrapped in a single object parameter:

     // Example,
    const rectSeries = ChartXY.addRectangleSeries({
    // Specify non-default X Axis to attach series to.
    xAxis: myNonDefaultAxisX
    })

    To learn about available properties, refer to RectangleSeriesOptions.

    Returns

    New series.

    Parameters

    • Optional options: RectangleSeriesOptions

      Optional object with readonly configuration arguments for RectangleSeries.

    Returns RectangleSeries

  • Method for adding a new SegmentSeries to the chart. This series type visualizes a collection of line segments (A -> B).

    To learn more about its features and usage, refer to SegmentSeries.

    Readonly configuration:

    Some properties of SegmentSeries can only be configured when it is created. These arguments are all optional, and are wrapped in a single object parameter:

     // Example,
    const series = ChartXY.addSegmentSeries({
    // Specify non-default X Axis to attach series to.
    xAxis: myNonDefaultAxisX
    })

    To learn about available properties, refer to SegmentSeriesOptions.

    Returns

    New series.

    Parameters

    • Optional options: SegmentSeriesOptions

      Optional object with readonly configuration arguments for SegmentSeries.

    Returns SegmentSeries

  • Method for adding a new SplineSeries to the chart. This series type visualizes a list of Points (pair of X and Y coordinates), with a smoothed curve stroke + point markers over each data point.

    To learn more about its features and usage, refer to SplineSeries.

    Readonly configuration:

    Some properties of SplineSeries can only be configured when it is created. These arguments are all optional, and are wrapped in a single object parameter:

     // Example,
    const splineSeries = ChartXY.addSplineSeries({
    // Select shape of point markers.
    pointShape: PointShape.Circle
    })

    To learn about available properties, refer to SplineSeriesOptions.

    NOTE: Using addPointLineAreaSeries is strongly recommended instead!

    Returns

    New series.

    Deprecated

    Deprecated in v6.1.0 in favour of addPointLineAreaSeries. For more information, see https://lightningchart.com/js-charts/docs/more-guides/beta-xy/

    Parameters

    • Optional options: SplineSeriesOptions

      Optional object with readonly configuration arguments for SplineSeries.

    Returns SplineSeries

  • Method for adding a new StepSeries to the chart. This series type visualizes a list of Points (pair of X and Y coordinates), with a stepped stroke + point markers over each data point.

    Possible step modes are: 'before', 'middle' and 'after'.

    To learn more about its features and usage, refer to StepSeries.

    Readonly configuration:

    Some properties of StepSeries can only be configured when it is created. These arguments are all optional, and are wrapped in a single object parameter:

     // Example,
    const stepSeries = ChartXY.addStepSeries({
    // Select shape of point markers.
    pointShape: PointShape.Circle
    })

    To learn about available properties, refer to StepSeriesOptions.

    NOTE: Using addPointLineAreaSeries is strongly recommended instead!

    Returns

    New series.

    Deprecated

    Deprecated in v6.1.0 in favour of addPointLineAreaSeries. For more information, see https://lightningchart.com/js-charts/docs/more-guides/beta-xy/

    Parameters

    • Optional options: StepSeriesOptions

      Optional object with readonly configuration arguments for StepSeries.

    Returns StepSeries

  • Method for adding a new TextSeries to the chart. This series type can be used to display a set of Text objects inside the series area.

    To learn more about its features and usage, refer to TextSeries.

    Readonly configuration:

    Some properties of TextSeries can only be configured when it is created. These arguments are all optional, and are wrapped in a single object parameter:

     // Example,
    const rectSeries = ChartXY.addTextSeries({
    // Specify non-default X Axis to attach series to.
    xAxis: myNonDefaultAxisX
    })

    To learn about available properties, refer to TextSeriesOptions.

    Returns

    New series.

    Parameters

    • Optional options: TextSeriesOptions

      Optional object with readonly configuration arguments for TextSeries.

    Returns TextSeries

  • Add a stand-alone UIElement using a builder.

    Example usage:

    1. TextBox with default positioning coordinate system.
     addUIElement( UIElementBuilders.TextBox )
    // Position = [0, 100] as percentages.
    .setPosition({ x: 50, y: 50 })
    1. Position in pixel coordinate system.
     addUIElement( UIElementBuilders.TextBox, chart.coordsRelative )
    // Position = pixels.
    .setPosition({ x: 300, y: 100 })
    1. Position on Axes.
     addUIElement( UIElementBuilders.TextBox, { x: chartXY.getDefaultAxisX(), y: chartXY.getDefaultAxisY() } )
    // Position = Axis values.
    .setPosition({ x: 5, y: 5 })

    Returns

    Object that fulfills interfaces: UIElementType (typeparam) and UIElement

    Type Parameters

    Parameters

    • builder: UIElementBuilder<UIElementType> = ...

      UIElementBuilder. If omitted, TextBoxBuilder will be selected. Use UIElementBuilders for selection.

    • scale: UserScaleDefinition = ...

      Optional parameter for altering the coordinate system used for positioning the UIElement. Defaults to whole Chart in percentages [0, 100].

    Returns UIElementType & UIElement

  • Beta

    Clear zoom state history which is used by restorePreviousZoomState as well as any built-in "restorePrevious" user interactions.

     // Example usage, set axis interval and ensure any previous zoom state history is deleted.
    chart.axisX.setInterval({ start: 0, end: 100 })
    chart.clearPreviousZoomStateHistory()

    The order of above operations is important.

    Returns

    Object itself.

    Introduced in v7.0.0. API may change according to user feedback.
    

    Returns ChartXY<CursorResultTableBackgroundType>

  • Permanently destroy the component.

    To fully allow Garbage-Collection to free the resources used by the component, make sure to remove any references to the component and its children in application code.

    let chart = ...ChartXY()
    let axisX = chart.getDefaultAxisX()
    // Dispose Chart, and remove all references so that they can be garbage-collected.
    chart.dispose()
    chart = undefined
    axisX = undefined

    Returns

    Object itself for fluent interface

    Returns ChartXY<CursorResultTableBackgroundType>

  • Operate on each axis of chart, x and y

    Parameters

    • clbk: ((axis: Axis) => void)

      Callback function for axis

        • (axis: Axis): void
        • Parameters

          Returns void

    Returns ChartXY<CursorResultTableBackgroundType>

  • Operate on each x axis of chart

    Parameters

    • clbk: ((axis: Axis, i: number, allAxes: Axis[]) => void)

      Callback function for axis

        • (axis: Axis, i: number, allAxes: Axis[]): void
        • Parameters

          Returns void

    Returns void

  • Operate on each y axis of chart

    Parameters

    • clbk: ((axis: Axis, i: number, allAxes: Axis[]) => void)

      Callback function for axis

        • (axis: Axis, i: number, allAxes: Axis[]): void
        • Parameters

          Returns void

    Returns void

  • Returns

    An array of axis. Sorted to increasing order based on iStack in case of multiple axis results.

    Parameters

    • Rest ...axisPositions: AxisPosition[]

      array of axis positions which have to be included to the output empty array indicates all of positions are included

    Returns Axis[]

  • Get reference to the built-in cursor object of the chart.

    Returns

    Generic cursor object.

    Returns CursorXY<CursorResultTableBackgroundType>

  • Get current Cursor during Axis animations state.

    Axis Animations are Axis Scale changes that are animated, such as Zooming and Scrolling done by using API (such as Axis.setInterval) or by using the mouse to click & drag on the Chart.

    Returns

    True if Cursor is enabled during Axis Animations, false if not.

    Returns boolean

  • Convenience method to get a tuple of the Charts default X and Y axes.

    Equal to [ChartXY.getDefaultAxisX(), ChartXY.getDefaultAxisY()]

    Intended for conveniently applying same modifications to both X and Y axes.

    Returns

    [chart.getDefaultAxisX(), chart.getDefaultAxisY()]

    Returns [Axis, Axis]

  • Get reference to the default X Axis of the ChartXY.

    This will always return reference to the visible X Axis that is closest to the chart (starting from bottom).

    Returns

    Default X Axis of chart.

    Returns Axis

  • Get reference to the default Y Axis of the ChartXY.

    This will always return reference to the visible Y Axis that is closest to the chart (starting from left).

    Returns

    Default Y Axis of chart.

    Returns Axis

  • Beta

    Get chart layout information. This is a getter variant of ChartXYLayoutChangedEvent. In most cases, ChartXYLayoutChangedEvent is more convenient as it fires whenever the layout changes. For more information about the returned value and use cases, please read ChartXYLayoutChangedEvent.

     // Example syntax
    chart.getLayout().then(layout => {
    console.log(layout)
    })

    Returns

    Promise of layout information.

    Introduced in v7.0.0. API may be changed according to user feedback.
    

    Returns Promise<ChartXYLayoutInfo>

  • Get theme effect enabled on component or disabled.

    A theme can specify an Effect to add extra visual oomph to chart applications, like Glow effects around data or other components. Whether this effect is drawn above a particular component can be configured using the setEffect method.

     // Example, disable theme effect from a particular component.
    Component.setEffect(false)

    For the most part, theme effects are enabled by default on most components.

    Theme effect is configured with effect property.

    Returns

    Boolean that describes whether drawing the theme effect is enabled around the component or not.

    Returns boolean

  • Get size of control as pixels.

    For stand-alone component, the size will be equal to the size of its containing HTML <div> (Control.engine.container)

    For component inside Dashboard, the size will only include the component itself, so size can be less than the size of containing HTML <div>.

    Returns

    Object with x and y properties { x: number, y: number }, where both are pixel values.

    Returns Point

  • Get theme effect enabled on component or disabled.

    A theme can specify an Effect to add extra visual oomph to chart applications, like Glow effects around data or other components. Whether this effect is drawn above a particular component can be configured using the setEffect method.

     // Example, disable theme effect from a particular component.
    Component.setEffect(false)

    For the most part, theme effects are enabled by default on most components.

    Theme effect is configured with effect property.

    Returns

    Boolean that describes whether drawing the theme effect is enabled around the component or not.

    Returns boolean

  • Get position of ChartXY title.

    Returns

    Title position.

    Returns "right-top" | "left-top" | "right-bottom" | "left-bottom" | "center-top" | "center-bottom" | "series-center-top" | "series-right-top" | "series-left-top" | "series-center-bottom" | "series-right-bottom" | "series-left-bottom"

  • Beta

    Get currently active user interaction scheme. This does NOT return the last value supplied to setUserInteractions. Rather, it considers the current structure of the chart, all built-in defaults as well as overrides supplied by the user and returns the currently used interaction scheme.

    Returns

    ChartXYUserInteractions

    Introduced in v7.0.0. API may change according to user feedback.
    

    Returns ChartXYUserInteractions

  • Get fillStyle for zooming rectangle when zooming.

    Returns

    FillStyle

    Returns FillStyle

  • Get stroke style for zooming rectangle when zooming.

    Returns

    LineStyle

    Returns LineStyle

  • Method pans axes by pixels.

    // Pan the chart 100 pixels to right.
    chart.pan({x: 100, y: 0})

    Parameters

    • delta: Point

      Amount to pan X/Y in pixels

    Returns void

  • Remove event listener added using addEventListener. The expected argument should be the exact same callback function that was supplied using addEventListener:

     // Basic example syntax
    const listener = () => {}
    obj.addEventListener('click', listener)
    obj.removeEventListener('click', listener)
     // Basic boilerplate of custom interaction when user drags on an object
    obj.addEventListener('pointerdown', (eventDown) => {
    let prevCoord = eventDown
    const handlePointerMove: LCJSInteractionEventListener<'pointermove'> = (eventMove) => {
    const delta = { x: eventMove.clientX - prevCoord.clientX, y: eventMove.clientY - prevCoord.clientY }
    prevCoord = eventMove
    console.log(delta, eventMove.clientX, eventMove.clientY)
    }
    const handlePointerUp: LCJSInteractionEventListener<'pointerup'> = (eventUp) => {
    window.removeEventListener('pointermove', handlePointerMove)
    window.removeEventListener('pointerup', handlePointerUp)
    }
    window.addEventListener('pointermove', handlePointerMove)
    window.addEventListener('pointerup', handlePointerUp)
    })

    Type Parameters

    Parameters

    • type: K
    • listener: ((event: ChartXYEventMap[K], info: unknown) => unknown)

      Listener that was added using addEventListener.

    Returns void

  • Beta

    Restore previous zoom state of all Axes.

    ChartXY automatically follows the state of its axes. The previous state can be restored using this method.

     // Example usage
    chart.restorePreviousZoomState()
     // Example, all properties
    chart.restorePreviousZoomState({
    whitelist: [specificAxis],
    animate: 1000, // 1000 ms animation
    stopAxisAfter: true
    })

    Returns

    Object itself.

    Introduced in v7.0.0. API may change according to user feedback.
    

    Parameters

    Returns ChartXY<CursorResultTableBackgroundType>

  • Capture rendered state in an image file. Prompts the browser to download the created file.

    NOTE: The download might be blocked by browser/plugins as harmful. To prevent this, only call the method in events tied to user-interactions. From mouse-event handlers, for example.

    Has two optional parameters which directly reference JavaScript API HTMLCanvasElement.toDataURL. For supported image formats, compression quality, Etc. refer to:

    https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toDataURL

    Example usage:

    // Download 'screenshot.png'
    Panel.saveToFile('screenshot')
    // Attempt download 'maybeNotSupported.bmp'
    Panel.saveToFile('maybeNotSupported', 'image/bmp')
    // Attempt download jpeg.file with specified compression quality
    Panel.saveToFile('fileName', 'image/jpeg', 0.50)

    Remarks

    If 'type' is not supported by browser, an Error will be thrown.

    Parameters

    • fileName: string

      Name of prompted download file as string. File extension shouldn't be included as it is automatically detected from 'type'-argument.

    • Optional type: string

      A DOMString indicating the image format. The default format type is image/png.

    • Optional encoderOptions: number

      A Number between 0 and 1 indicating the image quality to use for image formats that use lossy compression such as image/jpeg and image/webp. If this argument is anything else, the default value for image quality is used. The default value is 0.92.

    Returns ChartXY<CursorResultTableBackgroundType>

  • Set FillStyle of chart background.

     // Example usage,
    ChartXY.setBackgroundFillStyle(new SolidFill({ color: ColorRGBA( 80, 0, 0 ) }))

    Related API:

    • Use SolidFill to describe a solid fill color.
    • Use ColorRGBA to create a color from Red, Green, Blue (and optionally) Alpha values in range [0, 255].

    Transparent chart backgrounds:

    LightningChart JS charts can be configured to be fully or partially transparent.

     // Example, partially transparent chart

    // Engine background exists under all LCJS components. In case of Dashboard, there is only 1 shared engine background.
    chart.engine.setBackgroundFillStyle(emptyFill)
    // Chart background covers every 1 chart. In case of Dashboard, every chart has its own chart background.
    chart.setBackgroundFillStyle(new SolidFill({ color: ColorRGBA(0, 0, 0, 100) }))
    // Some charts also have a separate series background.
    chart.setSeriesBackgroundFillStyle(new SolidFill({ color: ColorRGBA(0, 0, 0, 100) }))

    Returns

    Object itself

    Parameters

    Returns ChartXY<CursorResultTableBackgroundType>

  • Style chart cursor using a callback function. Available style APIs can depend on the type of chart.

     // Example syntax
    chart.setCursor((cursor) => cursor
    .setGridStrokeXStyle(new SolidLine({
    thickness: 1,
    fillStyle: new SolidFill({ color: ColorRGBA( 255, 0, 0 ) })
    }))
    )

    See Cursor2D, CursorXY or Cursor3D for all available methods for configuring the cursor.

    Example usage:

     // Example 1, disable Y Axis tick marker & grid line.
    chart.setCursor((cursor) => cursor
    .setTickMarkerYVisible(false)
    .setGridStrokeYStyle(emptyLine)
    )
     // Example 2, style cursor ResultTable.
    chart.setCursor((cursor) => cursor
    .setResultTable((resultTable) => resultTable
    .setOrigin(UIOrigins.LeftTop)
    .setTextFillStyle(new SolidFill({ color: ColorRGBA(255, 0, 0) }))
    .setTextFont((font) => font
    .setSize(12)
    .setFamily('sans-serif')
    )
    .setBackground((background) => background
    .setFillStyle(new SolidFill({ color: ColorRGBA(0, 0, 0, 0) }))
    )
    )
    )
     // Example 3, style cursor TickMarker X.
    chart.setCursor((cursor) => cursor
    .setTickMarkerX((tickMarker: UIPointableTextBox) => tickMarker
    .setTextFont((font) => font.setWeight('bold'))
    .setTextFillStyle(new SolidFill({ color: ColorRGBA(0, 255, 0) }))
    .setBackground((background) => background.setFillStyle(emptyFill).setStrokeStyle(emptyLine)),
    )
    )

    Returns

    Object itself for fluent interface.

    Parameters

    • mutator: Mutator<CursorXY<CursorResultTableBackgroundType>>

      Callback function that receives reference to the charts cursor.

    Returns ChartXY<CursorResultTableBackgroundType>

  • Disable/Enable Cursor during Axis Animations.

    Axis Animations are Axis Scale changes that are animated, such as Zooming and Scrolling done by using API (such as Axis.setInterval) or by using the mouse to click & drag on the Chart.

    Returns

    Chart itself for fluent interface.

    Parameters

    • autoCursorEnabled: boolean

      Boolean value to enable or disable Cursor during Axis Animations.

    Returns ChartXY<CursorResultTableBackgroundType>

  • Set cursor formatting, controlling the text displayed in built-in cursor.

     chart.setCursorFormatting((_, hit, hits) => {
    return [
    ['Cursor pointing at'],
    [hit.series], // returning a series will display the series color and its name automatically.
    ['X', '', hit.axisX.formatValue(hit.x)], // utilizing axis formatValue is useful for considering active zoom level and type of axis
    ['Y', '', hit.y.toFixed(2)], // empty string '' results in gap between cells
    [{ text: 'Example', font: { weight: 'bold' }, fillStyle: fillRed }] // any cell can also be styled individually
    ]
    })

    Before overriding default cursor formatting, it is recommended to check if using setUnits or configuring Axis cursor formatting would be enough.

    In order to use series specific data properties (e.g. Heatmap sample "intensity"), you should use type guards to assert the type of the SolveResult:

     // Example of using type guard in cursor formatter
    Chart.setCursorFormatting((chart, hit, hits) => {
    if (!isHitHeatmap(hit)) return undefined
    return [hit.intensity.toFixed(1)]
    })

    More details in Developer documentation (Features > Cursor).

    Returns

    Object itself

    Parameters

    Returns ChartXY<CursorResultTableBackgroundType>

  • Set cursor behavior. This affects both built-in cursor as well as any custom cursor connected using setCustomCursor.

    For possible values see SolveNearestMode. Additionally, you can supply undefined value to disable cursor completely.

     // Example, show 1 nearest solve result only
    chart.setCursorMode('show-nearest')
     // Example, disable cursor
    chart.setCursorMode(undefined)
     // Example, enable interpolation
    chart.setCursorMode('show-all-interpolated')

    Returns

    Object itself

    Parameters

    Returns ChartXY<CursorResultTableBackgroundType>

  • Connect a custom cursor to the chart. This has 2 effects:

    1. The built-in cursor is disabled.
    2. The provided callback function is called whenever the custom cursor should be updated, along with the data that the cursor should be pointing at.

    Custom cursors are still affected by other cursor behavior controls such as:

    The custom cursor can be anything defined by the user, such as:

    • Using other LCJS means of displaying the cursor, like custom ticks, constant lines, text boxes, etc.
    • Displaying a cursor using HTML/JS/CSS
    • Displaying a cursor using UI framework, like Angular, React, Vue, Next, ...
     // Example of plugging in a custom cursor
    chart.setCustomCursor((event) => {
    if (event) {
    // Display custom cursor
    } else {
    // Hide custom cursor
    }
    })

    Returns

    Object itself

    Parameters

    • clbk: undefined | ((event: CursorTargetChangedEvent<SolveResultXY>) => unknown)

      undefined to restore built-in cursor or callback function that should be triggered to display custom cursor.

    Returns ChartXY<CursorResultTableBackgroundType>

  • Set padding around Chart in pixels.

     // Example 1, specify complete padding (four sides).
    ChartXY.setPadding({ left: 16, right: 16, top: 32, bottom: 8 })
     // Example 2, specify only single padding.
    ChartXY.setPadding({ right: 64 })

    Returns

    Object itself

    Parameters

    • padding: number | Partial<Margin>

      Number with pixel margins for all sides or datastructure with individual pixel paddings for each side. Any side can be omitted, only passed values will be overridden.

    Returns ChartXY<CursorResultTableBackgroundType>

  • Set theme effect enabled on component or disabled.

    A theme can specify an Effect to add extra visual oomph to chart applications, like Glow effects around data or other components. Whether this effect is drawn above a particular component can be configured using the setEffect method.

     // Example, disable theme effect from a particular component.
    Component.setEffect(false)

    For the most part, theme effects are enabled by default on most components.

    Theme effect is configured with effect property.

    Returns

    Object itself.

    Parameters

    • enabled: boolean

      Theme effect enabled

    Returns ChartXY<CursorResultTableBackgroundType>

  • Set FillStyle of series background (area behind series).

     // Example usage,
    ChartXY.setSeriesBackgroundFillStyle(new SolidFill({ color: ColorRGBA( 60, 0, 0 ) }))

    Related API:

    • Use SolidFill to describe a solid fill color.
    • Use ColorRGBA to create a color from Red, Green, Blue (and optionally) Alpha values in range [0, 255].

    Transparent chart backgrounds:

    LightningChart JS charts can be configured to be fully or partially transparent.

     // Example, partially transparent chart

    // Engine background exists under all LCJS components. In case of Dashboard, there is only 1 shared engine background.
    chart.engine.setBackgroundFillStyle(emptyFill)
    // Chart background covers every 1 chart. In case of Dashboard, every chart has its own chart background.
    chart.setBackgroundFillStyle(new SolidFill({ color: ColorRGBA(0, 0, 0, 100) }))
    // Some charts also have a separate series background.
    chart.setSeriesBackgroundFillStyle(new SolidFill({ color: ColorRGBA(0, 0, 0, 100) }))

    Returns

    Object itself

    Parameters

    Returns ChartXY<CursorResultTableBackgroundType>

  • Set text of Chart title.

    Returns

    Object itself for fluent interface.

    Parameters

    • title: string

      Chart title as a string.

    Returns ChartXY<CursorResultTableBackgroundType>

  • Set theme effect enabled on component or disabled.

    A theme can specify an Effect to add extra visual oomph to chart applications, like Glow effects around data or other components. Whether this effect is drawn above a particular component can be configured using the setEffect method.

     // Example, disable theme effect from a particular component.
    Component.setEffect(false)

    For the most part, theme effects are enabled by default on most components.

    Theme effect is configured with effect property.

    Returns

    Object itself.

    Parameters

    • enabled: boolean

      Theme effect enabled

    Returns ChartXY<CursorResultTableBackgroundType>

  • Specifies padding after chart title.

    This does not have an effect if title is hidden (empty FillStyle).

     // Example 1, specify vertical margins
    ChartXY.setTitleMargin({ top: 0, bottom: 10 })

    // Example 2, specify margins for all sides with same value for Title.
    ChartXY.setTitleMargin(40)

    Returns

    Chart itself for fluent interface

    Parameters

    • marginPixels: number | Partial<Margin>

      Gap after the chart title in pixels.

    Returns ChartXY<CursorResultTableBackgroundType>

  • Set position of ChartXY title.

     // Example usage
    ChartXY.setTitlePosition(ChartXYTitlePositionOptions.LeftTop)

    // Or
    ChartXY.setTitlePosition('left-top')

    For available options, see ChartXYTitlePosition

    To tweak title position, you may use setTitleMargin

    Parameters

    • pos: "right-top" | "left-top" | "right-bottom" | "left-bottom" | "center-top" | "center-bottom" | "series-center-top" | "series-right-top" | "series-left-top" | "series-center-bottom" | "series-right-bottom" | "series-left-bottom"

      Title position.

    Returns ChartXY<CursorResultTableBackgroundType>

  • Beta

    Configure user interactions from a set of preset options.

    Without any explicit configuration, the charts select the default user interaction scheme based on available information, such as axis types, attached series and data supplied to series.

    The setUserInteraction methods allow explicitly configuring the used interaction scheme.

    This is not a definitive operation, but rather modifies the current state. For example, modifying pan interaction does not affect the state of any other interactions.

     // Example, LMB pan, RMB rectangle zoom
    chart.setUserInteractions({
    pan: {
    lmb: { drag: true },
    rmb: false,
    },
    rectangleZoom: {
    lmb: false,
    rmb: {},
    },
    })
     // Example, disable default "restore default view" interaction, enable "restore previous view"
    chart.setUserInteractions({
    restoreDefault: false,
    restorePrevious: {
    doubleClick: true,
    ctrlZ: true
    },
    })
     // Example, disable all interactions
    chart.setUserInteractions(undefined)
     // Example, restore default interactions
    chart.setUserInteractions({})

    Returns

    Object itself.

    Introduced in v7.0.0. API may change according to user feedback.
    

    Parameters

    Returns ChartXY<CursorResultTableBackgroundType>

  • Method for solving the nearest data point from all existing series relative to a given coordinate on screen.

     // Example syntax
    chart.onSeriesBackgroundMouseClick((_, event) => {
    const solve1 = chart.solveNearest(event, 'show-nearest') // solve nearest location (1)
    const solve2 = chart.solveNearest(event, 'show-all') // solve all locations
    })

    Returns

    SolveResult object.

    Parameters

    • Optional from: CoordinateClient

      Reference coordinate on web page as client coordinates. This can for example be directly an Event object. undefined results in using last registered mouse location.

    • solveMode: SolveNearestMode = ...

      Optional control for solve nearest behavior

    Returns SolveResultXY[]

  • Beta

    Swap the positions of two Axes.

    Only supports swapping between same planes of Axis. For example, two X axes, or two Y axes.

    Currently also doesn't support swapping between different modes of opposite axes. For example, between X axis on left and X axis on right.

    Returns

    Object itself Released as beta feature in v5.2.0 feature may still change according to user feedback and experiences.

    Parameters

    • axis1: Axis

      First axis

    • axis2: Axis

      Second axis

    Returns ChartXY<CursorResultTableBackgroundType>

  • Translate a coordinate in HTML client coordinate system to another coordinate system.

    (1) arbitrary X and Y axes coordinate system:

     ChartXY.onSeriesBackgroundMouseClick((_, event) => {
    const locationAxis = chart.translateCoordinate(event, chart.coordsAxis)
    // locationAxis tells the clicked location along Axis interval (in same value range as data points).
    })

    chart.coordsAxis is a convenience selector for the active default axes (X and Y). Arbitrary set of X and Y axes can be selected like this:

     const locationAxis = chart.translateCoordinate(event, { x: myAxisX, y: myAxisY })
    

    (2) relative control coordinate system:

     const locationClient = { clientX: document.body.clientWidth * 0.2, clientY: document.body.clientHeight * 0.5 }
    const locationRelative = chart.translateCoordinate(locationClient, chart.coordsRelative)
    // locationRelative is in pixels relative to bottom left corner of the chart

    Relative coordinates can be used for positioning LightningChart JS UI components:

     const textBox = chart.addUIElement(UIElementBuilders.TextBox, chart.coordsRelative)
    // Left bottom of TextBox is positioned 20 pixels right and 20 pixels up from charts bottom left corner
    .setOrigin(UIOrigins.LeftBottom)
    .setPosition({ x: 20, y: 20 })

    NOTE: Currently coordinate translations can't be guaranteed to be in sync with latest updates to charts. For example, if you change axis interval, or add data to a series, you need to wait for 1 frame to be displayed before translateCoordinate will behave as expected.

     LineSeries.add(myData)
    requestAnimationFrame(() => {
    // translateCoordinate should now consider data added just now.
    })

    Type Parameters

    Parameters

    Returns T extends "relative" ? CoordinateXY : T extends CoordinateSystemAxis ? CoordinateXY : never

  • Translate a coordinate to another coordinate system.

    Supported INPUT coordinate systems Syntax Syntax 2
    arbitrary X and Y axes chart.coordsAxis { x: Axis, y: Axis }
    relative coordinates chart.coordsRelative
    Supported OUTPUT coordinate systems Syntax Syntax 2
    arbitrary X and Y axes chart.coordsAxis { x: Axis, y: Axis }
    relative coordinates chart.coordsRelative
    HTML client coordinates chart.coordsClient

    Most common example use cases:

    (1) Translate a coordinate from axes to HTML client coordinates

     const locationAxis = { x: 2, y: 5 }
    const locationClient = chart.translateCoordinate(locationAxis, chart.coordsAxis, chart.coordsClient)

    Client coordinates can be used to absolute position HTML elements using CSS, for example.

     myHTMLElement.style.position = 'absolute'
    myHTMLElement.style.left = locationClient.clientX
    myHTMLElement.style.top = locationClient.clientY

    (2) Translate a coordinate from HTML client coordinates to axes

     ChartXY.onSeriesBackgroundMouseClick((_, event) => {
    const locationAxis = chart.translateCoordinate(event, chart.coordsAxis)
    // locationAxis tells the clicked location along Axis interval (in same value range as data points).
    })

    (3) Translate a coordinate from axes to relative chart coordinates

     const locationAxis = { x: 2, y: 5 }
    const locationRelative = chart.translateCoordinate(locationAxis, chart.coordsAxis, chart.coordsRelative)

    Relative coordinates can be used for positioning LightningChart JS UI components:

     const textBox = chart.addUIElement(UIElementBuilders.TextBox, chart.coordsRelative)
    // Left bottom of TextBox is positioned 20 pixels right and 20 pixels up from charts bottom left corner
    .setOrigin(UIOrigins.LeftBottom)
    .setPosition({ x: 20, y: 20 })

    (4) Translate a coordinate from relative chart coordinates to axes

     const locationRelative = { x: 0, y: 0 }
    const locationAxis = chart.translateCoordinate(locationRelative, chart.coordsRelative, chart.coordsAxis)

    NOTE: Currently coordinate translations can't be guaranteed to be in sync with latest updates to charts. For example, if you change axis interval, or add data to a series, you need to wait for 1 frame to be displayed before translateCoordinate will behave as expected.

     LineSeries.add(myData)
    requestAnimationFrame(() => {
    // translateCoordinate should now consider data added just now.
    })

    Type Parameters

    Parameters

    Returns T extends "client" ? CoordinateClient : T extends "relative" ? CoordinateXY : T extends CoordinateSystemAxis ? CoordinateXY : never

  • Translate a coordinate in HTML client coordinate system to relative coordinates within the component.

     const locationClient = { clientX: document.body.clientWidth * 0.2, clientY: document.body.clientHeight * 0.5 }
    const locationRelative = chart.translateCoordinate(locationClient, chart.coordsRelative)
    // locationRelative is in pixels relative to bottom left corner of the chart

    Relative coordinates can be used for positioning LightningChart JS UI components:

     const textBox = chart.addUIElement(UIElementBuilders.TextBox, chart.coordsRelative)
    // Left bottom of TextBox is positioned 20 pixels right and 20 pixels up from charts bottom left corner
    .setOrigin(UIOrigins.LeftBottom)
    .setPosition({ x: 20, y: 20 })

    NOTE: Currently coordinate translations can't be guaranteed to be in sync with latest updates to charts. For example, if you change axis interval, or add data to a series, you need to wait for 1 frame to be displayed before translateCoordinate will behave as expected.

     LineSeries.add(myData)
    requestAnimationFrame(() => {
    // translateCoordinate should now consider data added just now.
    })

    Type Parameters

    • T extends "relative"

    Parameters

    Returns T extends "relative" ? CoordinateXY : never

  • Translate a coordinate from relative control coordinates to HTML client coordinate system.

     // 10 pixels left and 20 pixels up from controls bottom left corner
    const locationRelative = { x: 10, y: 20 }
    const locationClient = chart.translateCoordinate(locationRelative, chart.coordsRelative, chart.coordsClient)

    Client coordinates can be used to absolute position HTML elements using CSS, for example.

     myHTMLElement.style.position = 'absolute'
    myHTMLElement.style.left = locationClient.clientX
    myHTMLElement.style.top = locationClient.clientY

    NOTE: Currently coordinate translations can't be guaranteed to be in sync with latest updates to charts. For example, if you change axis interval, or add data to a series, you need to wait for 1 frame to be displayed before translateCoordinate will behave as expected.

     LineSeries.add(myData)
    requestAnimationFrame(() => {
    // translateCoordinate should now consider data added just now.
    })

    Type Parameters

    • T extends "client"

    Parameters

    • coordinate: CoordinateXY
    • srcCoordinateSystem: "relative"
    • targetCoordinateSystem: T

    Returns T extends "client" ? CoordinateClient : never

  • Method zooms axes by pixels.

    // Zoom the chart out.
    chart.zoom({x: 500, y: 500}, {x: 1, y: 1})

    Parameters

    • location: Point

      Origin location for zooming as viewport pixels

    • amount: Point

      Amount to zoom X/Y in pixels

    Returns void