Close Editor Run Reset Auto Update CJS const lcjsTrader = require('@lightningchart/lcjs-trader')
const lcjs = require('@lightningchart/lcjs')
const { PalettedFill, LUT, regularColorSteps } = lcjs
Promise.all([
lcjsTrader.trader(TRADER_LICENSE),
fetch(`${document.head.baseURI}examples/assets/1200/surface-data.json`).then((r) => r.json()),
]).then(([trader, data]) => {
const {
keyX,
keyY,
keyZ,
keyIntensity,
startX,
stepX,
startZ,
stepZ,
valueRanges,
surfaceResolution,
surfaceDataY,
surfaceDataIntensity,
dataPoints,
} = data
const lc = trader.lightningChart()
const chart = lc
.Chart3D()
.setTitle('Trading surface chart')
.setCursorMode(undefined)
chart.getDefaultAxisX().setTitle(keyX)
chart.getDefaultAxisY().setTitle(keyY)
chart.getDefaultAxisZ().setTitle(keyZ)
const pointSeries = chart
.addPointSeries()
.setName('Points')
.add(dataPoints)
.setPointStyle((points) => points.setSize(5))
const surface = chart
.addSurfaceGridSeries({
dataOrder: 'columns',
columns: surfaceResolution,
rows: surfaceResolution,
})
.setStart({ x: startX, z: startZ })
.setStep({ x: stepX, z: stepZ })
.setName('Surface')
.invalidateHeightMap(surfaceDataY)
if (keyIntensity) {
surface.invalidateIntensityValues(surfaceDataIntensity).setFillStyle(
new PalettedFill({
lookUpProperty: 'value',
lut: new LUT({
interpolate: true,
steps: regularColorSteps(
valueRanges[keyIntensity].min,
valueRanges[keyIntensity].max,
chart.getTheme().examples.badGoodColorPalette,
),
units: keyIntensity,
}),
}),
)
}
})
Trading Surface Chart - Editor
Example showing use of Surface charts with dynamic coloring in trading use cases.
Surface chart allow visualization of relations between 3 different data properties at once. This can be extended to 4 properties at once by adding in dynamic coloring.
This example loads in a prepared data set of different Fintech indicators (standard deviation, skewness, dmi, standard error) and displays the raw points using a 3D Point Series and the resulting surface using a 3D Surface Series.