2009-03-14 30 views

Respuesta

10

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.

+1

tipo de reinventar la rueda .. a menos que usted quiere construir su propio marco. – h3xStream

+0

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

3

También hay varias bibliotecas de gráficos disponibles para PHP para hacer su vida más simple. JPGraph es bueno (no libre).

+0

He usado JPGraph antes y la versión gratuita del software también es muy buena. Para el problema simple que necesita ser resuelto, creo que será suficiente. – Digits

+0

JPGraph es una excelente lib. Muchos tipos de gráficos y muchas opciones. Es gratis para proyectos no comerciales. – h3xStream

11

Puede usar google's chart api para generar gráficos.

+2

Google Chart Api solo está en el lado del cliente. Usan para ofrecer una descarga del lado del servidor, pero eso ya pasó. – allencoded

16

pChart es otra gran biblioteca gráfica de PHP.

+0

pChart funcionó para mí, es una biblioteca rica en recursos y muy poderosa !!! Gracias John – Roland

+0

No hay problema, me alegro de que ayudó. :) –

+2

Hipo: Es GPL. Sin mención de LGPL. – Koobz

1

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.

+0

Por lo que puedo decir, gd y gd2 parecen ser bastante similares, con gd2 siendo solo una versión posterior (con "2 "añadido al nombre del archivo DLL). – Sukasa

+0

No tengo idea acerca de ningún DLL porque puedo obtener mi software ;-) – 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

Utilice '' en lugar de ''. – Mai

+0

Gran solución He votado a favor, pero ¿qué es $ _REQUEST ['asdfad'] = 234234; utilizado para al final de la secuencia de comandos? – Tarik

5

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.

This Pie Chart is really easy to make

Cuestiones relacionadas