php - una - hacer graficas mysql
¿Cómo dibujar un gráfico en PHP? (8)
Con mucho, la solución más sencilla es utilizar la API de Google Chart http://code.google.com/apis/chart/
Puedes hacer gráficos de barras, gráficos circulares, usar 3D, y es tan fácil como crear una URL con algunos parámetros. Vea el ejemplo simple a continuación.
Hola, quiero dibujar un gráfico (distribución de marca Stdent) en mi sitio basado en PHP. ¿Cómo puedo hacer esto?
Hay una serie de bibliotecas disponibles para generar gráficos.
- Open Flash Cart - basado en flash
- GraPHPite
- Gráficos JS - basados en Javascript
- Libchart
Más se enumeran arriba y here .
No tengo idea de gd2, pero he hecho algo similar con gd y no fue tan difícil.
Vaya a http://www.php.net/ y busque cosas como
- ImageCreate
- imageline
- imágenes
No es tan llamativo como algunas de esas otras soluciones, pero como genera una imagen, funcionará en todos los navegadores. (excepto lince ... :-))
/ Johan
Actualización: Casi lo olvido, no use jpeg para este tipo de imágenes. Los artefactos jpeg serán realmente molestos, png es una mejor solución.
Puede utilizar la API de gráficos de Google para generar gráficos.
Su mejor apuesta es buscar php_gd2. Es una biblioteca de imágenes bastante decente que viene con PHP (simplemente deshabilitada en php.ini), y no solo puede generar sus imágenes terminadas en un par de formatos, sino que tiene suficientes funciones para que pueda hacer un buen gráfico con bastante facilidad. .
EDITAR: podría ayudar si te diera un par de enlaces útiles:
http://www.libgd.org/ - Puede obtener la última php_gd2
aquí
http://ca3.php.net/gd - El manual de php_gd
.
También hay varias bibliotecas gráficas disponibles para PHP para simplificar tu vida. JPGraph es una buena (no libre).
pChart es otra gran librería de gráficos PHP.
<?
# ------- 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;
?>