Hey, je veux dessiner un graphique (distribution de marque Stdent) dans mon site basé sur PHP. Comment puis-je faire ceci?Comment dessiner un graphique en PHP?
Répondre
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
.
Il existe également plusieurs bibliothèques graphiques disponibles pour PHP pour vous simplifier la vie. JPGraph est un bon (non-libre).
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
JPGraph est une excellente lib. De nombreux types de graphiques et de nombreuses options. C'est gratuit pour un projet non commercial. – h3xStream
Vous pouvez utiliser google's chart api pour générer des graphiques.
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
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.
<?
# ------- 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;
?>
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.
- 1. Dessiner un graphique avec l'axe X proportionnel en Python
- 2. comment dessiner graphique à courbes en utilisant Google charts
- 3. XNA comment puis-je dessiner un graphique simple?
- 4. Javascript bibliothèque graphique pour dessiner une région
- 5. Dessiner des tartes en utilisant PHP ImageMagick
- 6. Créer un graphique Excel par programmation en PHP
- 7. Comment dessiner des graphismes simples en C#?
- 8. Comment puis-je dessiner des graphiques automatiques en utilisant un point en Python sur un Mac?
- 9. Dessiner sur un objet graphique GDI + un bitmap utilisant StretchDIBits pour la mise à l'échelle
- 10. Comment dessiner un cercle affichant un nombre en flex
- 11. Toute bibliothèque graphique pour unix capable de dessiner des histogrammes?
- 12. Graphique linéaire 3D en Java
- 13. Comment dessiner un NSString à un angle?
- 14. Java/Swing: Comment dessiner un graphique à barres simple dans un moteur de rendu personnalisé pour un JLabel
- 15. Comment dessiner un en-tête multi-colonne DataGridView personnalisé
- 16. Comment dessiner un bitmap ARGB en utilisant GDI +?
- 17. Comment dessiner un personnage humain en utilisant Cocos2d?
- 18. Comment dessiner un plan transparent en Java 3D?
- 19. Comment dessiner un cercle d'apparence décente en Java
- 20. Dessiner un graphe de nœud en Visual Basic
- 21. Dessiner un Quad en plein écran?
- 22. Convertir un objet graphique en objet bitmap
- 23. Comment puis-je dessiner un graphique avec un TimeSeries dans jfreecharts qui n'interpole pas les valeurs de date pour moi?
- 24. Personnaliser dessiner un UITableViewCell
- 25. Quartz2D: Comment dessiner un arc de cercle?
- 26. graphiques VC++ en utilisant Graphique X
- 27. Comment dessiner un bitmap avec 50% d'opacité?
- 28. Dessiner un rectangle pivoté
- 29. Comment afficher un graphique linéaire en utilisant JFreeChart dans jsp?
- 30. Durée d'exécution du journal/graphique PHP
Type de réinventer la roue .. sauf si vous voulez construire votre propre cadre. – h3xStream
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