Basically you need the TChartColorMapSeries which fills the drawing area by rectangles of size StepX/StepY; for each rectangle, centered at the point x/y, a function is calculated at x/y, and the function value is mapped to a color which is used to fill the rectangle. Of course, when StepX/StepY are 1, very smooth color shades can be achieved.

The series is described in a tutorial,

https://wiki.lazarus.freepascal.org/TAChart_Tutorial:_ColorMapSeries,_Zooming, the tutorial project is ready to use in the folder components/tachart/tutorial/mandelbrot of your Lazarus installation. Another demo can be found in folder components/tachart/demo/func, page "Color map".

Your problem is that your data points do not densely cover the x/y plane, and you somehow must interpolate. A long time ago, I wrote an interpolation unit to be attached to the ColorMapSeries - I am enclosing a demo project showing its application. But still, this interpolation unit assumes that the data points are on a regular grid in the x/y plane. If you have randomly located data points you must work through the math and write an interpolation on your own.