2009-03-14 6 views

Répondre

10

Votre meilleur pari est de rechercher php_gd2. C'est une bibliothèque d'images assez décente qui vient avec PHP (juste désactivé dans php.ini), et non seulement vous pouvez sortir vos images finies dans un couple de formats, il a assez de fonctions que vous devriez être en mesure de faire un bon graphique assez facilement .

EDIT: cela pourrait aider si je vous ai donné un couple liens utiles:

http://www.libgd.org/ - Vous pouvez obtenir la dernière php_gd2 ici
http://ca3.php.net/gd - Le manuel php_gd.

+1

Type de réinventer la roue .. sauf si vous voulez construire votre propre cadre. – h3xStream

+0

pas sûr si c'est vraiment une réponse utile. Dire que je veux lisser une courbe, ajouter une légende, positionner le texte de la légende en haut ou en bas, positionner les graduations majeures et les graduations mineures comme telles, ajouter une deuxième, troisième, quatrième ligne de l'axe Y, etc. générer votre propre graphique. C'est génial pour quelqu'un qui veut créer un logiciel de cartographie, mais quand il s'agit d'utiliser un logiciel de cartographie, et veut la vitesse du développeur, c'est trop de douleur. – Dennis

3

Il existe également plusieurs bibliothèques graphiques disponibles pour PHP pour vous simplifier la vie. JPGraph est un bon (non-libre).

+0

J'ai déjà utilisé JPGraph et la version gratuite du logiciel est également très bonne. Pour le problème simple qui doit être résolu, je pense que cela suffira. – Digits

+0

JPGraph est une excellente lib. De nombreux types de graphiques et de nombreuses options. C'est gratuit pour un projet non commercial. – h3xStream

11

Vous pouvez utiliser google's chart api pour générer des graphiques.

+2

Google Chart Api est côté client seulement maintenant. Ils utilisent pour offrir un téléchargement côté serveur, mais c'est parti depuis longtemps. – allencoded

16

pChart est une autre excellente bibliothèque graphique PHP.

+0

pChart a fonctionné pour moi, c'est une bibliothèque riche en ressources et très puissante !!! Thanx John – Roland

+0

Pas de problème, content que cela ait aidé. :) –

+2

Hiccup: C'est GPL. Aucune mention de LGPL. – Koobz

1

N'avez pas idée de gd2, mais j'ai fait une chose similaire avec gd et ce n'était pas si difficile.

Aller à http://www.php.net/ et rechercher des choses comme

  • ImageCreate
  • imageline
  • imagestring

Ce n'est pas aussi flashy que certains d'entre eux d'autre solution là-bas, mais puisque vous générer une image, il fonctionnera dans tous les navigateurs. (sauf le lynx ... :-))

/Johan


Mise à jour: je presque oublié, ne pas utiliser jpeg pour ce type d'images. Les artefacts jpeg seront vraiment ennuyeux, png est une meilleure solution.

+0

Pour autant que je sache, gd et gd2 semblent être assez similaires, avec gd2 juste une version plus récente (avec "2 "collé sur le nom de fichier de la DLL). – Sukasa

+0

N'a aucune idée de toute dll depuis que j'atteigne mon logiciel ;-) – Johan

7
<? 
# ------- The graph values in the form of associative array 
$values=array(
    "Jan" => 110, 
    "Feb" => 130, 
    "Mar" => 215, 
    "Apr" => 81, 
    "May" => 310, 
    "Jun" => 110, 
    "Jul" => 190, 
    "Aug" => 175, 
    "Sep" => 390, 
    "Oct" => 286, 
    "Nov" => 150, 
    "Dec" => 196 
); 


$img_width=450; 
$img_height=300; 
$margins=20; 


# ---- Find the size of graph by substracting the size of borders 
$graph_width=$img_width - $margins * 2; 
$graph_height=$img_height - $margins * 2; 
$img=imagecreate($img_width,$img_height); 


$bar_width=20; 
$total_bars=count($values); 
$gap= ($graph_width- $total_bars * $bar_width)/($total_bars +1); 


# ------- Define Colors ---------------- 
$bar_color=imagecolorallocate($img,0,64,128); 
$background_color=imagecolorallocate($img,240,240,255); 
$border_color=imagecolorallocate($img,200,200,200); 
$line_color=imagecolorallocate($img,220,220,220); 

# ------ Create the border around the graph ------ 

imagefilledrectangle($img,1,1,$img_width-2,$img_height-2,$border_color); 
imagefilledrectangle($img,$margins,$margins,$img_width-1-$margins,$img_height-1-$margins,$background_color); 


# ------- Max value is required to adjust the scale ------- 
$max_value=max($values); 
$ratio= $graph_height/$max_value; 


# -------- Create scale and draw horizontal lines -------- 
$horizontal_lines=20; 
$horizontal_gap=$graph_height/$horizontal_lines; 

for($i=1;$i<=$horizontal_lines;$i++){ 
    $y=$img_height - $margins - $horizontal_gap * $i ; 
    imageline($img,$margins,$y,$img_width-$margins,$y,$line_color); 
    $v=intval($horizontal_gap * $i /$ratio); 
    imagestring($img,0,5,$y-5,$v,$bar_color); 

} 


# ----------- Draw the bars here ------ 
for($i=0;$i< $total_bars; $i++){ 
    # ------ Extract key and value pair from the current pointer position 
    list($key,$value)=each($values); 
    $x1= $margins + $gap + $i * ($gap+$bar_width) ; 
    $x2= $x1 + $bar_width; 
    $y1=$margins +$graph_height- intval($value * $ratio) ; 
    $y2=$img_height-$margins; 
    imagestring($img,0,$x1+3,$y1-10,$value,$bar_color);imagestring($img,0,$x1+3,$img_height-15,$key,$bar_color);   
    imagefilledrectangle($img,$x1,$y1,$x2,$y2,$bar_color); 
} 
header("Content-type:image/png"); 
imagepng($img); 
$_REQUEST['asdfad']=234234; 

?> 
+1

Veuillez utiliser '' au lieu de ''. – Mai

+0

Grande solution que j'ai upvoted mais qu'est-ce que $ _REQUEST ['asdfad'] = 234234; utilisé pour à la fin du script? – Tarik

5

De loin la solution la plus simple est d'utiliser simplement l'API Google Chart http://code.google.com/apis/chart/

Vous pouvez faire des graphiques à barres, camemberts, utilisez 3D, et il est aussi facile que la construction d'une URL avec certains paramètres. Voir l'exemple simple ci-dessous.

This Pie Chart is really easy to make

Questions connexes