Skip to content

Latest commit

 

History

History
125 lines (107 loc) · 3.59 KB

filled_spline.md

File metadata and controls

125 lines (107 loc) · 3.59 KB

Drawing a filled spline chart

Reference

require '/path/to/your/vendor/autoload.php';

use CpChart\Data;
use CpChart\Image;

/* Create and populate the Data object */
$data = new Data();
$data->setAxisName(0, "Strength");
for ($i = 0; $i <= 720; $i = $i + 20) {
    $data->addPoints(cos(deg2rad($i)) * 100, "Probe 1");
    $data->addPoints(cos(deg2rad($i + 90)) * 60, "Probe 2");
}

/* Create the Image object */
$image = new Image(847, 304, $data);
$image->drawGradientArea(0, 0, 847, 304, DIRECTION_VERTICAL, [
    "StartR" => 47,
    "StartG" => 47,
    "StartB" => 47,
    "EndR" => 17,
    "EndG" => 17,
    "EndB" => 17,
    "Alpha" => 100
]);
$image->drawGradientArea(0, 250, 847, 304, DIRECTION_VERTICAL, [
    "StartR" => 47,
    "StartG" => 47,
    "StartB" => 47,
    "EndR" => 27,
    "EndG" => 27,
    "EndB" => 27,
    "Alpha" => 100
]);
$image->drawLine(0, 249, 847, 249, ["R" => 0, "G" => 0, "B" => 0]);
$image->drawLine(0, 250, 847, 250, ["R" => 70, "G" => 70, "B" => 70]);

/* Add a border to the picture */
$image->drawRectangle(0, 0, 846, 303, ["R" => 204, "G" => 204, "B" => 204]);

/* Write the picture title */
$image->setFontProperties(["FontName" => "pf_arma_five.ttf", "FontSize" => 6]);
$image->drawText(423, 14, "Cyclic magnetic field strength", [
    "R" => 255,
    "G" => 255,
    "B" => 255,
    "Align" => TEXT_ALIGN_MIDDLEMIDDLE
]);

/* Define the chart area */
$image->setGraphArea(58, 27, 816, 228);

/* Draw a rectangle */
$image->drawFilledRectangle(58, 27, 816, 228, [
    "R" => 0,
    "G" => 0,
    "B" => 0,
    "Dash" => true,
    "DashR" => 0,
    "DashG" => 51,
    "DashB" => 51,
    "BorderR" => 0,
    "BorderG" => 0,
    "BorderB" => 0
]);

/* Turn on shadow computing */
$image->setShadow(true, ["X" => 1, "Y" => 1, "R" => 0, "G" => 0, "B" => 0, "Alpha" => 20]);

/* Draw the scale */
$image->setFontProperties(["R" => 255, "G" => 255, "B" => 255]);
$ScaleSettings = [
    "XMargin" => 4,
    "DrawSubTicks" => true,
    "GridR" => 255,
    "GridG" => 255,
    "GridB" => 255,
    "AxisR" => 255,
    "AxisG" => 255,
    "AxisB" => 255,
    "GridAlpha" => 30,
    "CycleBackground" => true
];
$image->drawScale($ScaleSettings);

/* Draw the spline chart */
$image->drawFilledSplineChart();

/* Write the chart boundaries */
$BoundsSettings = [
    "MaxDisplayR" => 237,
    "MaxDisplayG" => 23,
    "MaxDisplayB" => 48,
    "MinDisplayR" => 23,
    "MinDisplayG" => 144,
    "MinDisplayB" => 237
];
$image->writeBounds(BOUND_BOTH, $BoundsSettings);

/* Write the 0 line */
$image->drawThreshold(0, ["WriteCaption" => true]);

/* Write the chart legend */
$image->setFontProperties(["R" => 255, "G" => 255, "B" => 255]);
$image->drawLegend(560, 266, ["Style" => LEGEND_NOBORDER]);

/* Write the 1st data series statistics */
$settings = ["R" => 188, "G" => 224, "B" => 46, "Align" => TEXT_ALIGN_BOTTOMLEFT];
$image->drawText(620, 270, "Max : " . ceil($data->getMax("Probe 1")), $settings);
$image->drawText(680, 270, "Min : " . ceil($data->getMin("Probe 1")), $settings);
$image->drawText(740, 270, "Avg : " . ceil($data->getSerieAverage("Probe 1")), $settings);

/* Write the 2nd data series statistics */
$settings = ["R" => 224, "G" => 100, "B" => 46, "Align" => TEXT_ALIGN_BOTTOMLEFT];
$image->drawText(620, 283, "Max : " . ceil($data->getMax("Probe 2")), $settings);
$image->drawText(680, 283, "Min : " . ceil($data->getMin("Probe 2")), $settings);
$image->drawText(740, 283, "Avg : " . ceil($data->getSerieAverage("Probe 2")), $settings);

/* Render the picture (choose the best way) */
$image->autoOutput("example.drawFilledSplineChart.png");