For those curious how to use sparseColorImage() directly without the seperate createGradientImage() function.. here is the format of the array used:
Array ( 
[0]  => 0   // X1 (X coordinate value #1)
[1]  => 0   // Y1 (Y coordinate value #1)
[2]  => 1   // R (red value between 0 and 1)
[3]  => 0   // G (green value between 0 and 1)
[4]  => 0   // B (blue value between 0 and 1)
[5]  => 1   // A (alpha value between 0 and 1)
[6]  => 400 // X2 
[7]  => 0   // Y2 
[8]  => 0   // R 
[9]  => 1   // G 
[10] => 0   // B 
[11] => 1   // A
[12] => 0   // X3 
[13] => 400 // Y3 
[14] => 1   // R 
[15] => 1   // G 
[16] => 0   // B 
[17] => 1   // A 
[18] => 400 // X4
[19] => 400 // Y4
[20] => 0   // R 
[21] => 0   // G 
[22] => 1   // B 
[23] => 1   // A 
)
<?php
$imagick = new imagick();
$imagick->newImage(400,400,"white");
$imagick->setImageFormat("png");
$array = Array(0,0,1,0,0,1,400,0,0,1,0,1,0,400,1,1,0,1,400,400,0,0,1,1);
$imagick->sparseColorImage(imagick::SPARSECOLORMETHOD_BILINEAR,$array);
    
header("Content-Type: image/png");
echo $imagick->getImageBlob();
?>