Hola, quiero dibujar un gráfico (distribución de marcas) en mi sitio basado en PHP. ¿Cómo puedo hacer esto?¿Cómo dibujar un gráfico en PHP?
Respuesta
Su mejor opción es buscar php_gd2. Es una biblioteca de imágenes bastante decente que viene con PHP (solo deshabilitada en php.ini), y no solo puedes sacar tus imágenes terminadas en un par de formatos, sino que tiene suficientes funciones para que puedas hacer un buen gráfico con bastante facilidad. .
EDIT: que podría ayudar si te diera un par de enlaces útiles:
http://www.libgd.org/ - Usted puede obtener la última php_gd2
aquí
http://ca3.php.net/gd - El manual php_gd
.
También hay varias bibliotecas de gráficos disponibles para PHP para hacer su vida más simple. JPGraph es bueno (no libre).
Puede usar google's chart api para generar gráficos.
Google Chart Api solo está en el lado del cliente. Usan para ofrecer una descarga del lado del servidor, pero eso ya pasó. – allencoded
No tengo idea de gd2, pero he hecho algo similar con gd y no fue tan difícil.
Ir a http://www.php.net/ y buscar cosas como
- imagecreate
- imageline
- imagestring
No es tan llamativo como algunos de los otros solución por ahí, pero ya que generar una imagen que 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 solución mejor.
<?
# ------- 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;
?>
Con mucho, la solución más fácil es utilizar sólo el Gráfico API Google http://code.google.com/apis/chart/
Puede hacer gráficos de barras, gráficos circulares, utilizar 3D, y es tan fácil como la construcción de una URL con algunos parámetros. Vea el ejemplo simple a continuación.
- 1. Dibujar un gráfico web
- 2. Dibujar gráfico circular en Android?
- 3. Api para dibujar un gráfico en android
- 4. Cómo dibujar texto en un gráfico de MS ChartArea vacío?
- 5. ¿Cómo dibujar un gráfico circular manualmente en Android?
- 6. Cómo dibujar un gráfico simple en el iPhone
- 7. Android: ¿Cómo volver a dibujar un elemento gráfico?
- 8. matplotlib graficación interactiva (dibujar líneas manualmente en un gráfico)
- 9. Cómo dibujar el gráfico en framebuffer usando el lenguaje c ...?
- 10. ¿Cómo dibujar líneas verticales en el gráfico de Highcharts?
- 11. Cómo dibujar un círculo en img usando php?
- 12. dibujar un gráfico de dependencia para una clase java
- 13. Hacer un gráfico Gráfico en C#
- 14. ¿Cómo dibujar texto en lienzo?
- 15. Cómo actualizar el gráfico de barras de jqplot sin volver a dibujar el gráfico
- 16. ¿Cómo dibujar en un JLabel?
- 17. Cómo dibujar gráficos en Android?
- 18. Cómo dibujar un gráfico en Android como la aplicación Wifi Analyzer?
- 19. Dibujar Gráfico de distribución normal de una muestra en Matlab
- 20. Cómo dibujar un árbol que representa un gráfico de nodos conectados?
- 21. Cómo dibujar un sector circular en un lienzo html5?
- 22. Cómo dibujar un rectángulo?
- 23. Cómo dibujar un MKPolyline en un MapView?
- 24. Escribir/dibujar sobre un documento de plantilla PDF en PHP
- 25. Cómo dibujar un diagrama de función en WPF?
- 26. ¿Cómo visualizo un gráfico complejo en .Net?
- 27. Uso de Qt para dibujar el gráfico de Sin (x)
- 28. Dibujar texto girado en un lienzo HTML5
- 29. ¿Cómo puedo dibujar un buen gráfico como la aplicación HTC 'Stocks'
- 30. Cómo dibujar un diagrama de secuencia en una página HTML
tipo de reinventar la rueda .. a menos que usted quiere construir su propio marco. – h3xStream
no estoy seguro si realmente es una respuesta útil. Supongamos que quiero alisar una curva, agregar una leyenda, colocar el texto de la leyenda en la parte superior o inferior, colocar las marcas importantes y las marcas secundarias, agregar una segunda, tercera, cuarta línea del eje Y, etc. Parece un poco doloroso genera tu propio cuadro. Esto es ideal para alguien que quiere crear un software de gráficos, pero cuando se trata de usar un software de gráficos, y quiere la velocidad del desarrollador, esto es demasiado dolor. – Dennis