2009-03-14 22 views

Antwort

10

Ihre beste Wette ist, php_gd2 nachzuschlagen. Es ist eine recht anständige Bild-Bibliothek, die mit PHP (nur deaktiviert in php.ini) geliefert wird, und nicht nur können Sie Ihre fertigen Bilder in ein paar Formaten ausgeben, es hat genug Funktionen, die Sie in der Lage sein sollten, eine gute Grafik ziemlich leicht zu machen .

EDIT: es könnte helfen, wenn ich Ihnen ein paar nützliche Links haben:

http://www.libgd.org/ - Sie können die neueste php_gd2 hier
http://ca3.php.net/gd zu bekommen - The php_gd Handbuch.

+1

Art, das Rad neu zu erfinden .. wenn Sie Ihr eigenes Framework aufbauen wollen. – h3xStream

+0

nicht sicher, ob es wirklich eine nützliche Antwort ist. Angenommen, ich möchte eine Kurve glätten, eine Legende hinzufügen, den Legendentext oben oder unten positionieren, wichtige Teilstriche und kleinere Teilstriche so positionieren, eine zweite, dritte, vierte Y-Achsenlinie hinzufügen usw. Scheint wie ein Schmerz zu sein Erstelle dein eigenes Diagramm. Dies ist großartig für jemanden, der eine Charting-Software erstellen möchte, aber wenn es darum geht, eine Charting-Software zu verwenden und Entwicklergeschwindigkeit möchte, ist das einfach zu viel Schmerz. – Dennis

3

Es gibt auch mehrere Grafikbibliotheken für PHP, die Ihnen das Leben erleichtern. JPGraph ist eine gute (nicht freie).

+0

Ich habe JPGraph schon früher benutzt und die kostenlose Version der Software ist auch sehr gut. Für das einfache Problem, das gelöst werden muss, denke ich, dass es ausreichen wird. – Digits

+0

JPGraph ist eine ausgezeichnete lib. Viele Arten von Graphen und viele Optionen. Es ist kostenlos für nicht kommerzielle Projekte. – h3xStream

11

Sie können google's chart api verwenden, um Diagramme zu generieren.

+2

Google Chart Api ist nur auf der Client-Seite verfügbar. Sie verwenden, um einen serverseitigen Download anzubieten, aber das ist lange vorbei. – allencoded

16

pChart ist eine weitere großartige PHP-Grafikbibliothek.

+0

pChart arbeitete für mich, es ist eine ressourcenreiche Bibliothek und sehr mächtig !!! Danke John – Roland

+0

Kein Problem, froh, dass es geholfen hat. :) –

+2

Schluckauf: Es ist GPL. Keine Erwähnung von LGPL. – Koobz

1

Hab keine Ahnung von gd2, aber ich habe eine ähnliche Sache mit gd gemacht und es war nicht so schwer.

Zum http://www.php.net/ und für Dinge suchen, wie

  • Imagecreate
  • imageline
  • image

Es ist nicht so auffällig wie einige dieser anderen Lösung gibt, aber da Sie ein Bild erzeugen, das in allen Browsern funktioniert. (außer Luchs ... :-))

/Johan


Update: Fast hätte ich vergessen, verwenden Sie keine jpeg für diese Art von Bildern. Die JPEG-Artefakte werden wirklich ärgerlich, Png ist eine bessere Lösung.

+0

Soweit ich das beurteilen kann, scheinen gd und gd2 ziemlich ähnlich zu sein, wobei gd2 nur eine spätere Version ist (mit "2 "an den Dateinamen der DLL angeheftet". – Sukasa

+0

Hab keine Ahnung von irgendwelchen DLLs, da ich meine Software apt-hole ;-) – 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

Bitte verwenden Sie '' anstelle von ''. – Mai

+0

Tolle Lösung, die ich uplooted, aber was ist $ _REQUEST ['asdfad'] = 234234; für am Ende des Skripts verwendet? – Tarik

5

Bei weitem die einfachste Lösung ist nur die API Google Chart verwenden http://code.google.com/apis/chart/

Sie können Balkendiagramme machen, Kreisdiagramme mit 3D, und es ist so einfach wie eine URL mit einigen Parametern zu bauen. Siehe das einfache Beispiel unten.

This Pie Chart is really easy to make

Verwandte Themen