$myPicture->drawFilledRectangle(0, 0, 210, 100, $Settings);
/* Do a gradient overlay */
$Settings = array("StartR" => 194, "StartG" => 231, "StartB" => 44, "EndR" => 43, "EndG" => 107, "EndB" => 58, "Alpha" => 50);
$myPicture->drawGradientArea(0, 0, 210, 100, DIRECTION_VERTICAL, $Settings);
$myPicture->drawGradientArea(0, 0, 210, 20, DIRECTION_VERTICAL, array("StartR" => 0, "StartG" => 0, "StartB" => 0, "EndR" => 50, "EndG" => 50, "EndB" => 50, "Alpha" => 100));
/* Add a border to the picture */
$myPicture->drawRectangle(0, 0, 209, 99, array("R" => 0, "G" => 0, "B" => 0));
/* Write the picture title */
$myPicture->setFontProperties(array("FontName" => "../fonts/Silkscreen.ttf", "FontSize" => 6));
$myPicture->drawText(10, 13, "pSurface() :: Surface charts", array("R" => 255, "G" => 255, "B" => 255));
/* Define the charting area */
$myPicture->setGraphArea(50, 60, 180, 80);
$myPicture->drawFilledRectangle(50, 60, 180, 80, array("R" => 255, "G" => 255, "B" => 255, "Surrounding" => -200, "Alpha" => 20));
$myPicture->setShadow(TRUE, array("X" => 1, "Y" => 1));
/* Create the surface object */
$mySurface = new pSurface($myPicture);
/* Set the grid size */
$mySurface->setGrid(9, 1);
/* Write the axis labels */
$myPicture->setFontProperties(array("FontName" => "../fonts/pf_arma_five.ttf", "FontSize" => 6));
$myPicture->setFontProperties(array("FontName" => "../fonts/Bedizen.ttf", "FontSize" => 7));
$mySurface->writeXLabels(array("Angle" => 45, "Labels" => array("Run 1", "Run 2", "Run 3", "Run 4", "Run 5", "Run 6", "Run 7", "Run 8", "Run 9", "Run 10")));
$mySurface->writeYLabels(array("Labels" => array("Probe 1", "Probe 2")));
/* Add random values */
for ($i = 0; $i <= 10; $i++) {
    $mySurface->addPoint($i, rand(0, 1), rand(0, 100));
}
/* Draw the surface chart */
$mySurface->drawSurface(array("Border" => TRUE, "Surrounding" => 40));
/* Render the picture (choose the best way) */
$myPicture->autoOutput("pictures/example.surface.simple.png");
$myPicture->setFontProperties(array("FontName" => "../fonts/Silkscreen.ttf", "FontSize" => 6));
$myPicture->drawText(10, 13, "pSurface() :: 2D surface charts", array("R" => 255, "G" => 255, "B" => 255));
$myPicture->setShadow(TRUE, array("X" => 1, "Y" => 1));
/* Create the surface object */
$mySurface = new pSurface($myPicture);
/* Set the grid size */
$mySurface->setGrid(200, 0);
/* Write the axis labels */
$myPicture->setFontProperties(array("FontName" => "../fonts/pf_arma_five.ttf", "FontSize" => 6, "R" => 255, "G" => 255, "B" => 255));
/* Draw the surface chart */
$Palette = array(0 => array("R" => 0, "G" => 0, "B" => 0), 1 => array("R" => 29, "G" => 243, "B" => 119), 2 => array("R" => 238, "G" => 216, "B" => 78), 3 => array("R" => 246, "G" => 45, "B" => 53));
$myPicture->setGraphArea(40, 40, 380, 80);
$mySurface->writeYLabels(array("Labels" => "1st Seq"));
for ($i = 0; $i <= 200; $i++) {
    $mySurface->addPoint($i, 0, rand(0, 3));
}
$mySurface->drawSurface(array("Padding" => 0, "Palette" => $Palette));
$myPicture->setGraphArea(40, 100, 380, 140);
$mySurface->writeYLabels(array("Labels" => "2nd Seq"));
for ($i = 0; $i <= 200; $i++) {
    $mySurface->addPoint($i, 0, rand(0, 3));
}
$mySurface->drawSurface(array("Padding" => 0, "Palette" => $Palette));
$myPicture->setGraphArea(40, 160, 380, 200);
$mySurface->writeYLabels(array("Labels" => "3rd Seq"));
for ($i = 0; $i <= 200; $i++) {
    $mySurface->addPoint($i, 0, rand(0, 3));
}
$mySurface->drawSurface(array("Padding" => 0, "Palette" => $Palette));
/* Render the picture (choose the best way) */
$myPicture->autoOutput("pictures/example.surface.palette.png");