Ik ben een scripje aan het maken waarmee php aan de hand van getallen in een array een grafiek kan maken.

Dat werkt goed, alleen krijg ik het startpunt van de y-as niet goed.

Info:
Afbeelding groote (hoogte) waar de grafiek mag komen: van 8px naar 216px

max en min waarde in array: 300, 120 (de min en max kunnen verschillen)

Heeft er iemand een idee hoe ik dit kan maken en dat het juist werkt bij verschillende min en max waarde in de array?

Zie voorbeeld: http://85.145.1.14/grafiek.php




Hallo,

Post je script eens. ;)

<?
header("content-type: image/png");

//achtergrond opvragen
$img = imagecreatefrompng("beurs.png");

$waarden = array("175", "170", "190", "150", "120", "150", "160", "180", "200", "40", "150", "120", "150", "160");

//voor de y as
$hoogste = max($waarden);
$kleinste = min($waarden);

$verschil = $hoogste - $kleinste;

$tussen_y = 217 / $verschil;

//voor de x-as
$lengte = count($waarden) -1;

$tussen_x = 268 / $lengte;

//kleuren
$red = imagecolorallocate($img, 255, 0, 0);
$green = imagecolorallocate($img, 0, 110, 26);
$black = imagecolorallocate($img, 255, 255, 255);

//y-as tekst toevoegen
$y_text_pos = 25;
$y_text = $hoogste;

$min_waarde_y = ($hoogste - $kleinste) / 6;

for($i=0; $i < 7; $i++) {
imagestring($img, 2, 8, $y_text_pos, round($y_text), $red);

$y_text = $y_text - $min_waarde_y;

$y_text_pos = $y_text_pos + 36;
}

//x-as tekst toevoegen
$x_text_pos = 18;
$x_text = 1;

$min_waarde = ($hoogste - $kleinste) / 5;

for($i=0; $i < 7; $i++) {
imagestring($img, 2, $x_text_pos, 256, "Dag ".$x_text, $red);

$x_text = $x_text + 1;

$x_text_pos = $x_text_pos + 53;
}

//start waarde
$x_pos = 34;
$y_pos = (217 / $verschil) / 2;

for($i=0; $i < $lengte; $i++) {
$y_verplaats = $tussen_y * ($waarden[1+$i] - $waarden [0+$i]);

//grafiek lijn
imageline($img, $x_pos, $y_pos, $x_pos + $tussen_x, $y_pos - $y_verplaats, $red);

//blokjes
imageline($img, $x_pos-1, $y_pos, $x_pos + 1, $y_pos, $red);
imageline($img, $x_pos-1, $y_pos+1, $x_pos + 1, $y_pos+1, $red);
imageline($img, $x_pos-1, $y_pos+2, $x_pos + 1, $y_pos+2, $red);
$x_pos = $x_pos + $tussen_x;
$y_pos = $y_pos - $y_verplaats;
}

imagepng($img);
imagedestroy($img);
?>
Niemand een idee?

Reageren