Close Editor Run Reset Auto Update CJS /*
* LightningChartJS example that showcases clusters of points.
*/
// Import LightningChartJS
const lcjs = require('@arction/lcjs')
// Extract required parts from LightningChartJS.
const { lightningChart, SolidFill, SolidLine, ColorPalettes, emptyFill, AxisTickStrategies, PointShape, Themes } = lcjs
const pointSize = 10
// Decide on an origin for DateTime axis.
const dateOrigin = new Date(2018, 8, 1)
// Create a XY Chart.
const chart = lightningChart()
.ChartXY({
// theme: Themes.darkGold
})
.setTitle('Salary differences between Kuopio and Helsinki')
.setPadding({
right: 50,
})
// Modify the default X Axis to use DateTime TickStrategy, and set the origin for the DateTime Axis.
chart.getDefaultAxisX().setTickStrategy(AxisTickStrategies.DateTime, (tickStrategy) => tickStrategy.setDateOrigin(dateOrigin))
// Add a series for each cluster of points
const fstClusterSeries = chart.addPointSeries({ pointShape: PointShape.Circle }).setName('Kuopio').setPointSize(pointSize)
const sndClusterSeries = chart.addPointSeries({ pointShape: PointShape.Triangle }).setName('Helsinki').setPointSize(pointSize)
// The point supplied to series will have their X values multiplied by this value (for easier addition of DateTime-values).
const dataFrequency = 1000 * 60 * 60 * 24
const kuopioPoints = [
{ x: 12.152641878669275, y: 5335.336538461539 },
{ x: 11.62426614481409, y: 5259.615384615385 },
{ x: 10.919765166340508, y: 5082.932692307692 },
{ x: 10.156555772994128, y: 4923.076923076923 },
{ x: 9.334637964774949, y: 4796.875 },
{ x: 8.101761252446183, y: 4704.326923076923 },
{ x: 6.634050880626223, y: 4620.192307692308 },
{ x: 3.933463796477495, y: 4418.2692307692305 },
{ x: 3.111545988258317, y: 4342.548076923077 },
{ x: 2.8180039138943247, y: 4199.5192307692305 },
{ x: 2.8180039138943247, y: 4014.423076923077 },
{ x: 2.4657534246575334, y: 3930.2884615384614 },
{ x: 2.407045009784736, y: 3745.1923076923076 },
{ x: 2.935420743639921, y: 3408.653846153846 },
{ x: 3.6399217221135025, y: 3307.6923076923076 },
{ x: 5.107632093933463, y: 3181.4903846153848 },
{ x: 6.868884540117416, y: 3181.4903846153848 },
{ x: 7.749510763209393, y: 3198.3173076923076 },
{ x: 9.217221135029353, y: 3316.1057692307695 },
{ x: 10.215264187866929, y: 3475.9615384615386 },
{ x: 11.037181996086105, y: 3585.3365384615386 },
{ x: 12.035225048923678, y: 3719.951923076923 },
{ x: 12.798434442270057, y: 3778.846153846154 },
{ x: 16.027397260273972, y: 3820.9134615384614 },
{ x: 22.544031311154598, y: 3896.6346153846152 },
{ x: 24.187866927592953, y: 3963.9423076923076 },
{ x: 24.83365949119374, y: 4325.721153846154 },
{ x: 24.65753424657534, y: 4435.096153846154 },
{ x: 24.422700587084147, y: 4603.365384615385 },
{ x: 24.129158512720156, y: 4754.807692307692 },
{ x: 22.4853228962818, y: 5082.932692307692 },
{ x: 21.78082191780822, y: 5167.067307692308 },
{ x: 19.080234833659492, y: 5562.5 },
{ x: 17.31898238747554, y: 5722.3557692307695 },
{ x: 16.262230919765166, y: 5865.384615384615 },
{ x: 15.264187866927593, y: 5924.278846153846 },
{ x: 14.324853228962818, y: 5966.346153846154 },
{ x: 11.859099804305282, y: 5915.865384615385 },
{ x: 10.919765166340508, y: 5865.384615384615 },
{ x: 7.749510763209393, y: 5579.326923076923 },
{ x: 6.164383561643835, y: 5419.471153846154 },
{ x: 5.048923679060665, y: 5108.173076923077 },
{ x: 3.5812133072407044, y: 4460.336538461539 },
{ x: 2.8767123287671232, y: 4174.278846153846 },
{ x: 0.3522504892367906, y: 4342.548076923077 },
{ x: 0.3522504892367906, y: 4056.4903846153848 },
{ x: 0.23483365949119372, y: 3551.6826923076924 },
{ x: 0.410958904109589, y: 3282.4519230769233 },
{ x: 0.23483365949119372, y: 3046.875 },
{ x: 0.410958904109589, y: 2887.019230769231 },
{ x: 0.6457925636007827, y: 2693.5096153846152 },
{ x: 2.759295499021526, y: 2643.028846153846 },
{ x: 3.7573385518590996, y: 2643.028846153846 },
{ x: 5.98825831702544, y: 2668.269230769231 },
{ x: 9.510763209393346, y: 2693.5096153846152 },
{ x: 10.391389432485322, y: 2802.8846153846157 },
{ x: 11.037181996086105, y: 3030.048076923077 },
{ x: 11.741682974559687, y: 3274.038461538462 },
{ x: 12.857142857142856, y: 3475.9615384615386 },
{ x: 14.383561643835616, y: 3602.1634615384614 },
{ x: 15.205479452054796, y: 3652.6442307692305 },
{ x: 16.43835616438356, y: 3711.5384615384614 },
{ x: 17.96477495107632, y: 3804.0865384615386 },
{ x: 19.256360078277883, y: 4090.1442307692305 },
{ x: 19.021526418786692, y: 4233.173076923077 },
{ x: 17.201565557729943, y: 4384.615384615385 },
{ x: 15.088062622309199, y: 4435.096153846154 },
{ x: 12.270058708414872, y: 4376.201923076923 },
{ x: 10.626223091976517, y: 4207.932692307692 },
{ x: 8.336594911937379, y: 3862.9807692307695 },
{ x: 7.808219178082191, y: 3770.4326923076924 },
{ x: 5.283757338551859, y: 4485.576923076923 },
{ x: 4.87279843444227, y: 3896.6346153846152 },
{ x: 4.285714285714286, y: 3669.471153846154 },
{ x: 2.172211350293542, y: 4578.125 },
{ x: 3.933463796477495, y: 4981.971153846154 },
{ x: 5.518590998043054, y: 5335.336538461539 },
{ x: 7.749510763209393, y: 5798.076923076923 },
{ x: 10.09784735812133, y: 5688.701923076923 },
{ x: 9.628180039138943, y: 5352.163461538461 },
{ x: 13.209393346379647, y: 5570.913461538461 },
{ x: 12.68101761252446, y: 5772.836538461539 },
{ x: 14.794520547945204, y: 5688.701923076923 },
{ x: 16.203522504892366, y: 5461.538461538461 },
{ x: 18.493150684931507, y: 5183.8942307692305 },
{ x: 20.19569471624266, y: 4998.798076923077 },
{ x: 21.42857142857143, y: 4788.461538461539 },
{ x: 22.07436399217221, y: 4443.509615384615 },
{ x: 22.720156555772995, y: 4123.798076923077 },
{ x: 21.722113502935418, y: 4039.6634615384614 },
{ x: 19.608610567514678, y: 4443.509615384615 },
{ x: 18.786692759295498, y: 4586.538461538461 },
{ x: 16.731898238747554, y: 4822.115384615385 },
{ x: 14.500978473581215, y: 5032.451923076923 },
{ x: 13.972602739726026, y: 5099.759615384615 },
{ x: 12.38747553816047, y: 4754.807692307692 },
{ x: 14.911937377690801, y: 4687.5 },
{ x: 14.500978473581215, y: 4822.115384615385 },
{ x: 16.027397260273972, y: 5125 },
{ x: 15.029354207436398, y: 5394.2307692307695 },
{ x: 13.737769080234832, y: 5436.298076923077 },
{ x: 15.322896281800393, y: 5242.788461538461 },
{ x: 17.495107632093934, y: 5183.8942307692305 },
{ x: 18.904109589041095, y: 4838.942307692308 },
{ x: 20.900195694716242, y: 4603.365384615385 },
{ x: 22.133072407045006, y: 4620.192307692308 },
{ x: 22.367906066536204, y: 4737.9807692307695 },
{ x: 21.78082191780822, y: 4889.423076923077 },
{ x: 20.54794520547945, y: 5116.586538461539 },
{ x: 19.49119373776908, y: 5259.615384615385 },
{ x: 18.258317025440316, y: 5411.057692307692 },
{ x: 17.436399217221137, y: 5478.365384615385 },
{ x: 16.497064579256357, y: 5621.3942307692305 },
{ x: 14.383561643835616, y: 5814.903846153846 },
{ x: 13.561643835616438, y: 5840.1442307692305 },
{ x: 12.093933463796477, y: 5646.634615384615 },
{ x: 11.037181996086105, y: 5411.057692307692 },
{ x: 10.861056751467709, y: 5293.2692307692305 },
{ x: 9.921722113502934, y: 5150.240384615385 },
{ x: 8.336594911937379, y: 5301.682692307692 },
{ x: 6.927592954990215, y: 5217.548076923077 },
{ x: 6.34050880626223, y: 5015.625 },
{ x: 5.518590998043054, y: 4889.423076923077 },
{ x: 2.5244618395303324, y: 4679.086538461539 },
{ x: 4.1682974559686885, y: 4780.048076923077 },
{ x: 3.170254403131115, y: 4805.288461538461 },
{ x: 2.407045009784736, y: 4527.6442307692305 },
{ x: 1.8199608610567513, y: 4334.134615384615 },
{ x: 1.467710371819961, y: 4048.076923076923 },
{ x: 1.467710371819961, y: 3888.221153846154 },
{ x: 1.2915851272015655, y: 3711.5384615384614 },
{ x: 1.11545988258317, y: 3484.375 },
{ x: 1.3502935420743638, y: 3223.5576923076924 },
{ x: 1.4090019569471623, y: 3080.528846153846 },
{ x: 1.9960861056751458, y: 3030.048076923077 },
{ x: 4.10958904109589, y: 2929.0865384615386 },
{ x: 5.401174168297455, y: 2903.846153846154 },
{ x: 6.046966731898238, y: 2887.019230769231 },
{ x: 6.75146771037182, y: 2920.673076923077 },
{ x: 8.101761252446183, y: 2929.0865384615386 },
{ x: 9.217221135029353, y: 2996.394230769231 },
{ x: 10.09784735812133, y: 3189.903846153846 },
{ x: 6.34050880626223, y: 3097.3557692307695 },
{ x: 4.050880626223091, y: 3147.8365384615386 },
{ x: 2.8767123287671232, y: 3206.7307692307695 },
{ x: 2.1135029354207435, y: 2811.298076923077 },
{ x: 3.2289628180039136, y: 2929.0865384615386 },
{ x: 2.8180039138943247, y: 3055.288461538462 },
{ x: 4.931506849315069, y: 3265.625 },
{ x: 5.518590998043054, y: 3467.548076923077 },
{ x: 4.637964774951076, y: 3518.028846153846 },
{ x: 3.874755381604696, y: 3534.8557692307695 },
{ x: 2.8180039138943247, y: 3602.1634615384614 },
{ x: 2.23091976516634, y: 3644.2307692307695 },
{ x: 3.7573385518590996, y: 3879.8076923076924 },
{ x: 4.1682974559686885, y: 4098.557692307692 },
{ x: 4.6966731898238745, y: 4191.1057692307695 },
{ x: 5.694716242661448, y: 4258.413461538461 },
{ x: 6.986301369863013, y: 4350.961538461539 },
{ x: 7.86692759295499, y: 4409.8557692307695 },
{ x: 8.864970645792564, y: 4527.6442307692305 },
{ x: 9.217221135029353, y: 4586.538461538461 },
{ x: 9.041095890410958, y: 5141.826923076923 },
{ x: 8.512720156555773, y: 5074.5192307692305 },
{ x: 7.984344422700587, y: 4965.1442307692305 },
{ x: 7.455968688845399, y: 4838.942307692308 },
{ x: 6.457925636007829, y: 4754.807692307692 },
{ x: 5.577299412915851, y: 4679.086538461539 },
{ x: 6.986301369863013, y: 5343.75 },
{ x: 8.63013698630137, y: 5469.951923076923 },
{ x: 10.215264187866929, y: 5503.6057692307695 },
{ x: 11.154598825831703, y: 5537.259615384615 },
{ x: 13.033268101761252, y: 5427.884615384615 },
{ x: 13.09197651663405, y: 5192.307692307692 },
{ x: 12.152641878669275, y: 4990.384615384615 },
{ x: 10.919765166340508, y: 4695.913461538461 },
{ x: 10.450097847358121, y: 4611.778846153846 },
{ x: 9.804305283757339, y: 4477.163461538461 },
{ x: 8.806262230919765, y: 4359.375 },
{ x: 8.043052837573384, y: 4275.240384615385 },
{ x: 7.10371819960861, y: 4174.278846153846 },
{ x: 6.105675146771037, y: 3921.875 },
{ x: 5.636007827788649, y: 3719.951923076923 },
{ x: 6.223091976516634, y: 3568.5096153846152 },
{ x: 6.34050880626223, y: 3375 },
{ x: 6.986301369863013, y: 3324.519230769231 },
{ x: 7.632093933463796, y: 3425.4807692307695 },
{ x: 8.160469667318981, y: 3518.028846153846 },
{ x: 9.217221135029353, y: 3610.576923076923 },
{ x: 10.09784735812133, y: 3694.7115384615386 },
{ x: 11.037181996086105, y: 3787.2596153846152 },
{ x: 11.97651663405088, y: 3862.9807692307695 },
{ x: 12.915851272015654, y: 3947.1153846153848 },
{ x: 13.385518590998043, y: 4073.3173076923076 },
{ x: 14.442270058708415, y: 4115.384615384615 },
{ x: 15.616438356164382, y: 4123.798076923077 },
{ x: 17.201565557729943, y: 4115.384615384615 },
{ x: 18.375733855185906, y: 4048.076923076923 },
{ x: 19.608610567514678, y: 3947.1153846153848 },
{ x: 19.608610567514678, y: 3879.8076923076924 },
{ x: 21.42857142857143, y: 4182.692307692308 },
{ x: 20.958904109589042, y: 4308.894230769231 },
{ x: 23.01369863013699, y: 4275.240384615385 },
{ x: 19.021526418786692, y: 4426.682692307692 },
{ x: 17.377690802348333, y: 4645.432692307692 },
{ x: 17.553816046966734, y: 4931.490384615385 },
{ x: 16.262230919765166, y: 4990.384615384615 },
{ x: 16.203522504892366, y: 4679.086538461539 },
{ x: 14.853228962818003, y: 4468.75 },
{ x: 13.09197651663405, y: 4628.6057692307695 },
{ x: 13.913894324853228, y: 4805.288461538461 },
{ x: 12.622309197651663, y: 4906.25 },
{ x: 11.330724070450097, y: 4847.3557692307695 },
{ x: 11.037181996086105, y: 4199.5192307692305 },
{ x: 9.628180039138943, y: 3989.1826923076924 },
{ x: 9.217221135029353, y: 3930.2884615384614 },
{ x: 13.561643835616438, y: 4157.451923076923 },
{ x: 14.20743639921722, y: 4199.5192307692305 },
{ x: 18.904109589041095, y: 5823.317307692308 },
{ x: 19.608610567514678, y: 5739.182692307692 },
{ x: 20.900195694716242, y: 5713.942307692308 },
{ x: 21.722113502935418, y: 5865.384615384615 },
{ x: 22.720156555772995, y: 5655.048076923077 },
{ x: 23.95303326810176, y: 5528.846153846154 },
{ x: 23.894324853228966, y: 5394.2307692307695 },
{ x: 23.835616438356162, y: 5326.923076923077 },
{ x: 23.835616438356162, y: 5183.8942307692305 },
{ x: 23.894324853228966, y: 5024.038461538461 },
{ x: 24.481409001956948, y: 4872.596153846154 },
{ x: 21.487279843444227, y: 5394.2307692307695 },
{ x: 21.956947162426612, y: 5562.5 },
{ x: 22.367906066536204, y: 5512.0192307692305 },
{ x: 22.89628180039139, y: 5352.163461538461 },
{ x: 20.841487279843445, y: 5444.711538461539 },
{ x: 14.031311154598825, y: 3862.9807692307695 },
{ x: 15.557729941291585, y: 3854.5673076923076 },
{ x: 12.32876712328767, y: 4174.278846153846 },
{ x: 11.859099804305282, y: 4115.384615384615 },
{ x: 11.330724070450097, y: 3921.875 },
]
const helsinkiPoints = [
{ x: 6.164383561643835, y: 2314.6634615384614 },
{ x: 6.516634050880624, y: 2351.2019230769233 },
{ x: 7.045009784735812, y: 2479.0865384615386 },
{ x: 7.279843444227005, y: 2543.028846153846 },
{ x: 7.514677103718199, y: 2638.9423076923076 },
{ x: 8.277886497064578, y: 2794.230769230769 },
{ x: 8.63013698630137, y: 2853.605769230769 },
{ x: 10.156555772994128, y: 2972.355769230769 },
{ x: 10.919765166340508, y: 3018.028846153846 },
{ x: 11.800391389432484, y: 3063.7019230769233 },
{ x: 12.798434442270057, y: 3109.375 },
{ x: 14.442270058708415, y: 3155.0480769230767 },
{ x: 16.555772994129157, y: 3228.125 },
{ x: 17.025440313111545, y: 3292.0673076923076 },
{ x: 17.729941291585128, y: 3419.951923076923 },
{ x: 18.610567514677104, y: 3904.086538461538 },
{ x: 18.6692759295499, y: 3753.3653846153848 },
{ x: 18.31702544031311, y: 3616.346153846154 },
{ x: 18.082191780821915, y: 3534.1346153846152 },
{ x: 19.667318982387478, y: 3922.355769230769 },
{ x: 20.782778864970645, y: 3894.951923076923 },
{ x: 22.07436399217221, y: 3858.413461538461 },
{ x: 23.131115459882583, y: 3799.0384615384614 },
{ x: 24.951076320939336, y: 3739.6634615384614 },
{ x: 26.301369863013697, y: 3639.1826923076924 },
{ x: 26.59491193737769, y: 3424.5192307692305 },
{ x: 26.771037181996086, y: 3200.721153846154 },
{ x: 27.76908023483366, y: 2949.5192307692305 },
{ x: 28.12133072407045, y: 2712.0192307692305 },
{ x: 26.53620352250489, y: 2638.9423076923076 },
{ x: 25.655577299412915, y: 2437.980769230769 },
{ x: 15.616438356164382, y: 2150.2403846153848 },
{ x: 19.138943248532293, y: 2227.8846153846152 },
{ x: 20.782778864970645, y: 2300.9615384615386 },
{ x: 23.776908023483365, y: 2469.951923076923 },
{ x: 25.71428571428571, y: 2757.6923076923076 },
{ x: 26.301369863013697, y: 2849.0384615384614 },
{ x: 26.947162426614483, y: 2954.086538461538 },
{ x: 24.951076320939336, y: 3050 },
{ x: 24.83365949119374, y: 3324.0384615384614 },
{ x: 25.949119373776906, y: 3547.836538461538 },
{ x: 27.06457925636008, y: 3598.076923076923 },
{ x: 27.886497064579256, y: 3630.0480769230767 },
{ x: 28.003913894324853, y: 3767.0673076923076 },
{ x: 27.59295499021526, y: 3780.7692307692305 },
{ x: 26.066536203522503, y: 3744.230769230769 },
{ x: 24.36399217221135, y: 3853.8461538461534 },
{ x: 19.080234833659492, y: 3218.9903846153848 },
{ x: 14.442270058708415, y: 2944.951923076923 },
{ x: 10.626223091976517, y: 2821.6346153846152 },
{ x: 9.628180039138943, y: 2670.9134615384614 },
{ x: 8.454011741682974, y: 2492.7884615384614 },
{ x: 9.393346379647749, y: 2469.951923076923 },
{ x: 10.743639921722114, y: 2465.3846153846152 },
{ x: 13.033268101761252, y: 2488.221153846154 },
{ x: 8.21917808219178, y: 2323.798076923077 },
{ x: 7.10371819960861, y: 2273.5576923076924 },
{ x: 6.2818003913894325, y: 2264.423076923077 },
{ x: 6.223091976516634, y: 2186.778846153846 },
{ x: 6.457925636007829, y: 2168.5096153846152 },
{ x: 8.101761252446183, y: 2145.673076923077 },
{ x: 10.567514677103718, y: 2232.4519230769233 },
{ x: 11.448140900195694, y: 2442.548076923077 },
{ x: 12.270058708414872, y: 2661.778846153846 },
{ x: 14.031311154598825, y: 2967.7884615384614 },
{ x: 15.73385518590998, y: 3282.9326923076924 },
{ x: 16.908023483365948, y: 3438.221153846154 },
{ x: 17.61252446183953, y: 3570.6730769230767 },
{ x: 13.50293542074364, y: 3328.605769230769 },
{ x: 11.97651663405088, y: 3155.0480769230767 },
{ x: 10.332681017612524, y: 2958.653846153846 },
{ x: 8.864970645792564, y: 2826.201923076923 },
{ x: 7.162426614481409, y: 2652.644230769231 },
{ x: 10.450097847358121, y: 2702.8846153846152 },
{ x: 13.033268101761252, y: 2903.846153846154 },
{ x: 18.610567514677104, y: 3342.3076923076924 },
{ x: 19.608610567514678, y: 3575.2403846153848 },
{ x: 20.19569471624266, y: 3652.8846153846152 },
{ x: 19.960861056751465, y: 3739.6634615384614 },
{ x: 22.015655577299416, y: 3693.9903846153848 },
{ x: 23.24853228962818, y: 3333.1730769230767 },
{ x: 21.07632093933464, y: 3191.586538461538 },
{ x: 19.726027397260275, y: 3109.375 },
{ x: 18.31702544031311, y: 3086.5384615384614 },
{ x: 15.499021526418783, y: 3013.461538461538 },
{ x: 15.264187866927593, y: 2684.6153846153848 },
{ x: 14.031311154598825, y: 2529.326923076923 },
{ x: 13.561643835616438, y: 2680.048076923077 },
{ x: 16.908023483365948, y: 2775.961538461538 },
{ x: 18.02348336594912, y: 2830.7692307692305 },
{ x: 22.89628180039139, y: 2817.0673076923076 },
{ x: 21.78082191780822, y: 2437.980769230769 },
{ x: 20.724070450097848, y: 2433.4134615384614 },
{ x: 16.908023483365948, y: 2433.4134615384614 },
{ x: 12.915851272015654, y: 2218.75 },
{ x: 11.62426614481409, y: 2223.3173076923076 },
{ x: 13.85518590998043, y: 2364.903846153846 },
{ x: 16.08610567514677, y: 2278.125 },
{ x: 17.260273972602743, y: 2310.096153846154 },
{ x: 18.7279843444227, y: 2406.0096153846152 },
{ x: 19.021526418786692, y: 2465.3846153846152 },
{ x: 18.610567514677104, y: 2575 },
{ x: 17.201565557729943, y: 2588.701923076923 },
{ x: 15.675146771037182, y: 2451.6826923076924 },
{ x: 15.264187866927593, y: 2424.278846153846 },
{ x: 15.557729941291585, y: 2620.673076923077 },
{ x: 18.140900195694716, y: 2725.721153846154 },
{ x: 18.6692759295499, y: 2739.423076923077 },
{ x: 20.900195694716242, y: 2625.2403846153848 },
{ x: 22.309197651663403, y: 2620.673076923077 },
{ x: 23.95303326810176, y: 2570.4326923076924 },
{ x: 25.303326810176124, y: 2538.4615384615386 },
{ x: 25.655577299412915, y: 2538.4615384615386 },
{ x: 25.00978473581213, y: 2652.644230769231 },
{ x: 24.77495107632094, y: 2890.1442307692305 },
{ x: 23.424657534246577, y: 2986.0576923076924 },
{ x: 21.545988258317024, y: 2903.846153846154 },
{ x: 21.135029354207433, y: 2785.096153846154 },
{ x: 20.313111545988257, y: 2849.0384615384614 },
{ x: 19.726027397260275, y: 2972.355769230769 },
{ x: 17.96477495107632, y: 2958.653846153846 },
{ x: 17.553816046966734, y: 2940.3846153846152 },
{ x: 15.557729941291585, y: 2821.6346153846152 },
{ x: 13.620352250489233, y: 2803.3653846153848 },
{ x: 13.50293542074364, y: 2862.7403846153848 },
{ x: 12.38747553816047, y: 3008.8942307692305 },
{ x: 16.731898238747554, y: 3132.211538461538 },
{ x: 19.080234833659492, y: 3465.625 },
{ x: 20.430528375733854, y: 3511.2980769230767 },
{ x: 21.898238747553815, y: 3561.5384615384614 },
{ x: 22.95499021526419, y: 3602.6442307692305 },
{ x: 23.424657534246577, y: 3648.3173076923076 },
{ x: 23.718199608610565, y: 3675.721153846154 },
{ x: 24.77495107632094, y: 3520.4326923076924 },
{ x: 22.544031311154598, y: 3433.6538461538457 },
{ x: 20.078277886497062, y: 3342.3076923076924 },
{ x: 22.95499021526419, y: 3241.826923076923 },
{ x: 24.246575342465754, y: 3187.0192307692305 },
{ x: 22.661448140900195, y: 3109.375 },
{ x: 21.545988258317024, y: 3063.7019230769233 },
{ x: 26.360078277886497, y: 3118.5096153846152 },
{ x: 26.53620352250489, y: 3301.201923076923 },
{ x: 25.655577299412915, y: 3387.980769230769 },
{ x: 24.89236790606654, y: 3429.086538461538 },
{ x: 24.070450097847356, y: 3502.1634615384614 },
{ x: 25.244618395303327, y: 3643.75 },
{ x: 22.837573385518592, y: 3721.3942307692305 },
{ x: 21.135029354207433, y: 3776.201923076923 },
{ x: 19.608610567514678, y: 3821.875 },
{ x: 18.8454011741683, y: 3643.75 },
{ x: 20.665362035225048, y: 3419.951923076923 },
{ x: 21.252446183953033, y: 3319.471153846154 },
{ x: 16.379647749510767, y: 2986.0576923076924 },
{ x: 16.84931506849315, y: 3031.730769230769 },
{ x: 14.677103718199607, y: 3072.836538461538 },
{ x: 12.152641878669275, y: 2807.9326923076924 },
{ x: 11.682974559686889, y: 2593.269230769231 },
{ x: 10.626223091976517, y: 2561.298076923077 },
{ x: 9.686888454011742, y: 2570.4326923076924 },
{ x: 8.63013698630137, y: 2716.586538461538 },
{ x: 11.62426614481409, y: 2332.9326923076924 },
{ x: 6.986301369863013, y: 2369.471153846154 },
{ x: 8.63013698630137, y: 2383.173076923077 },
{ x: 9.334637964774949, y: 2364.903846153846 },
{ x: 9.804305283757339, y: 2328.3653846153848 },
{ x: 9.393346379647749, y: 2287.2596153846152 },
{ x: 9.393346379647749, y: 2246.153846153846 },
{ x: 10.450097847358121, y: 2214.1826923076924 },
{ x: 12.093933463796477, y: 2182.2115384615386 },
{ x: 13.561643835616438, y: 2191.346153846154 },
{ x: 14.383561643835616, y: 2273.5576923076924 },
{ x: 15.264187866927593, y: 2314.6634615384614 },
{ x: 17.201565557729943, y: 2332.9326923076924 },
{ x: 18.7279843444227, y: 2319.2307692307695 },
{ x: 19.78473581213307, y: 2364.903846153846 },
{ x: 19.960861056751465, y: 2606.971153846154 },
{ x: 20.371819960861057, y: 2611.5384615384614 },
{ x: 20.900195694716242, y: 2712.0192307692305 },
{ x: 22.77886497064579, y: 2739.423076923077 },
{ x: 23.894324853228966, y: 2775.961538461538 },
{ x: 21.956947162426612, y: 2976.9230769230767 },
{ x: 18.02348336594912, y: 3209.855769230769 },
{ x: 21.66340508806262, y: 3310.336538461538 },
{ x: 21.36986301369863, y: 3260.096153846154 },
{ x: 22.07436399217221, y: 3205.2884615384614 },
{ x: 23.659491193737768, y: 3100.2403846153843 },
{ x: 25.479452054794518, y: 3205.2884615384614 },
{ x: 26.65362035225049, y: 3036.2980769230767 },
{ x: 25.538160469667318, y: 2995.1923076923076 },
{ x: 25.244618395303327, y: 2954.086538461538 },
{ x: 27.945205479452053, y: 3159.6153846153848 },
{ x: 27.651663405088062, y: 3081.971153846154 },
{ x: 27.651663405088062, y: 3264.6634615384614 },
{ x: 27.945205479452053, y: 3547.836538461538 },
{ x: 27.475538160469664, y: 3511.2980769230767 },
{ x: 28.356164383561644, y: 3456.4903846153848 },
{ x: 28.767123287671232, y: 3438.221153846154 },
{ x: 16.379647749510767, y: 3442.7884615384614 },
{ x: 15.499021526418783, y: 3374.2788461538457 },
{ x: 14.500978473581215, y: 3269.230769230769 },
{ x: 13.268101761252446, y: 3214.4230769230767 },
{ x: 15.968688845401173, y: 3141.346153846154 },
{ x: 15.381604696673193, y: 3200.721153846154 },
{ x: 15.029354207436398, y: 3104.8076923076924 },
{ x: 11.682974559686889, y: 2922.1153846153848 },
{ x: 10.626223091976517, y: 2894.711538461538 },
{ x: 9.628180039138943, y: 2839.903846153846 },
{ x: 9.686888454011742, y: 2762.2596153846152 },
{ x: 11.859099804305282, y: 2734.855769230769 },
{ x: 9.217221135029353, y: 2912.980769230769 },
{ x: 8.277886497064578, y: 2584.1346153846152 },
{ x: 11.272015655577299, y: 2661.778846153846 },
{ x: 14.324853228962818, y: 2780.528846153846 },
{ x: 15.616438356164382, y: 2762.2596153846152 },
{ x: 16.614481409001957, y: 2712.0192307692305 },
{ x: 17.436399217221137, y: 2675.480769230769 },
{ x: 13.79647749510763, y: 2602.403846153846 },
{ x: 16.320939334637963, y: 2538.4615384615386 },
{ x: 17.729941291585128, y: 2511.0576923076924 },
{ x: 14.442270058708415, y: 2465.3846153846152 },
{ x: 12.093933463796477, y: 2529.326923076923 },
{ x: 12.857142857142856, y: 2597.8365384615386 },
{ x: 12.563600782778865, y: 2419.7115384615386 },
{ x: 12.798434442270057, y: 2342.0673076923076 },
{ x: 13.79647749510763, y: 2296.394230769231 },
{ x: 13.033268101761252, y: 2282.6923076923076 },
{ x: 10.567514677103718, y: 2369.471153846154 },
{ x: 9.041095890410958, y: 2433.4134615384614 },
{ x: 7.749510763209393, y: 2442.548076923077 },
{ x: 8.688845401174168, y: 2648.076923076923 },
{ x: 7.690802348336595, y: 2730.2884615384614 },
{ x: 23.01369863013699, y: 2931.25 },
{ x: 29, y: 2931.25 },
{ x: 29, y: 2931.25 },
{ x: 29, y: 2931.25 },
]
// Create collection of rectangles which are going to be used as frame for clusters
const rects = chart.addRectangleSeries().setCursorEnabled(false)
// Base style for strokes of frames. Line-FillStyle will be overridden per each cluster.
const strokeStyle = new SolidLine().setThickness(2)
// Setup view nicely.
chart.getDefaultAxisX().setInterval({ start: 0 * dataFrequency, end: 30 * dataFrequency, animate: true })
chart.getDefaultAxisY().setTitle('Salary ($)').setInterval({ start: 1500, end: 6500, animate: true })
/**
* Adds clusters of points to specified series and creates frames for them
* @param {PointSeries} series Series which should hold the cluster
* @return Function which receives a cluster of points
*/
const drawCluster = (series, points) => {
// Add points to specified series
series.add(points.map((point) => ({ x: point.x * dataFrequency, y: point.y })))
// Cache top left corner of cluster area
series.setCursorResultTableFormatter((builder, series, Xvalue, Yvalue) => {
return builder
.addRow(`${series.getName()}`)
.addRow('Date : ' + series.axisX.formatValue(Xvalue))
.addRow('Salary : $' + Yvalue.toFixed(0))
})
const topLeftCorner = {
x: series.getXMin(),
y: series.getYMin(),
}
// Create frame around cluster
rects
.add({
x: topLeftCorner.x,
y: topLeftCorner.y,
width: series.getXMax() - topLeftCorner.x,
height: series.getYMax() - topLeftCorner.y,
})
// Disable filling of frame
.setFillStyle(emptyFill)
// Configure thickness and color of stroke via strokeStyle
.setStrokeStyle(strokeStyle.setFillStyle(series.getPointFillStyle()))
}
drawCluster(fstClusterSeries, kuopioPoints)
drawCluster(sndClusterSeries, helsinkiPoints)
// Enable AutoCursor auto-fill.
chart.setAutoCursor((cursor) =>
cursor.setResultTableAutoTextStyle(true).setTickMarkerXAutoTextStyle(true).setTickMarkerYAutoTextStyle(true),
)
// Finally, add LegendBox to chart.
chart
.addLegendBox()
.add(fstClusterSeries)
.add(sndClusterSeries)
// Dispose example UI elements automatically if they take too much space. This is to avoid bad UI on mobile / etc. devices.
.setAutoDispose({
type: 'max-width',
maxWidth: 0.3,
})
JavaScript Point Clusters Chart - Editor This example shows how to create clusters of differently colored points, how to get the boundaries of a series and use them to draw frames around each cluster.
The most efficient way to draw point cloud clusters is utilizing PointSeries . The description of how to configure the visual appearance of points can be found in previous tutorials and more information can be found in API documentation.
const cluster = chart. addPointSeries ( )
Boundaries Each series automatically computes its boundaries based on the data input and configuration of a series. Get the boundaries in axis values using the following methods:
const minCorner = {
x: series. getXMin ( ) ,
y: series. getYMin ( ) ,
}
const maxCorner = {
x: series. getXMax ( ) ,
y: series. getYMax ( ) ,
}
The boundary rectangle is defined by two points in 2D space. The same methods are applicable to all the series as well as progressive series in any directions.