gd-3d-staafdiagram

Gesponsorde koppelingen

PHP script bestanden

  1. gd-3d-staafdiagram

« Lees de omschrijving en reacties

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
<?php

$gegevens
= array(10, 30, 40);
$kleuren = array('#FF0000', '#00FF00', '#0000FF');
$legenda = array('Type A', 'Type B', 'Type C');
$img_hoogte = 500; # Hoogte van het plaatje
$breedte = 40; # Breedte van de kolom

# Berekend de breedte van het plaatje excl. de legenda breedte

function kolom_hoogte($deel, $max, $img_hoogte, $breedte){
    return ($deel/$max)*($img_hoogte-(0.5*$breedte));
}


# Voor het 3d effect (half cosinus 30)
function schuin_x($breedte){
    return $breedte*0.43;
}


# Voor het 3d effect (half sinus 30)
function schuin_y($breedte){
    return $breedte*0.25;
}


# Zet de HTML kleur om in een rbg waarde.
function hex2rbg($color, $image){
    $string = str_replace('#','',$color);
    return    imagecolorallocate($image, hexdec(substr($string,0,2)), hexdec(substr($string,2,2)), hexdec(substr($string,4,2)));
}


# Berekend het maximum aantal tekens per array waarde en geeft de lengte van de langste terug.
function maxarraylength($input){
    foreach($input as $v){
        $output[] = strlen($v);
    }

    return max($output);
}


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

# grootte van het plaatje basseren op het aantal kolomen:
$kolomen = count($gegevens);
$width = ($kolomen*$breedte*2)+(0.5*$breedte);
$image = imagecreate($width+(maxarraylength($legenda)*7)+25, ($img_hoogte+1));

# Achtergrond:
$bg = imagecolorallocate($image, 255, 255, 255);

# KOLUMS
for($i=0;$i<$kolomen;$i++){
    # vars:
    $begin = ($i*$breedte)+($i*$breedte)+(0.5*$breedte);
    $hoogte = kolom_hoogte($gegevens[$i], max($gegevens), $img_hoogte, $breedte);
    $kleur = hex2rbg($kleuren[$i], $image);
    $black = imagecolorallocate($image, 0, 0, 0);
    
    # kolom:
    imagefilledrectangle($image, $begin, ($img_hoogte-$hoogte), ($begin+$breedte), $img_hoogte, $kleur); # Vlak
    imagerectangle($image, $begin, ($img_hoogte-$hoogte), ($begin+$breedte), $img_hoogte, $black); # Omlijning
    
    # 3d effect:

    $punten = array(
        $begin,#X
        ($img_hoogte-$hoogte),#Y
      
        ($begin+schuin_x($breedte)),#X
        ($img_hoogte-$hoogte-schuin_y($breedte)),#Y
      
        ($begin+$breedte+schuin_x($breedte)),#X
        ($img_hoogte-$hoogte-schuin_y($breedte)),#Y
      
        ($begin+$breedte+schuin_x($breedte)),#X
        ($img_hoogte-schuin_y($breedte)),#Y
      
        ($begin+$breedte),#X
        $img_hoogte,#Y
      
        ($begin+$breedte),#X
        ($img_hoogte-$hoogte)#Y
    );
    imagefilledpolygon($image, $punten, 6, $kleur); # Vlak
    imagepolygon($image, $punten, 6, $black); # Omlijning
    imageline($image, $punten[10], $punten[11], $punten[4], $punten[5], $black); # Tussen lijn
    
    # Legenda:

    $top = (15*$i)+(15*$i)+(0.5*$breedte);
    $left = ($kolomen*$breedte)+($kolomen*$breedte)+(0.5*$breedte);
    imagefilledrectangle($image, $left, $top*0.5, $left+15, $top*0.5+10, $kleur); # Vlak
    imagerectangle($image, $left, $top*0.5, $left+15, $top*0.5+10, $black); # Omlijning
    imagestring($image, 3, $left+20, $top*0.5, $legenda[$i], $black); # Text
}
# // KOLUMS

imagepng($image);

imagedestroy($image);

?>

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.