Hey Ich möchte ein Diagramm (Stdent Mark Distribution) auf meiner Website basierend auf PHP zeichnen. Wie kann ich das machen?Wie zeichne ich ein Diagramm in PHP?
Antwort
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.
Es gibt auch mehrere Grafikbibliotheken für PHP, die Ihnen das Leben erleichtern. JPGraph ist eine gute (nicht freie).
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
JPGraph ist eine ausgezeichnete lib. Viele Arten von Graphen und viele Optionen. Es ist kostenlos für nicht kommerzielle Projekte. – h3xStream
Sie können google's chart api verwenden, um Diagramme zu generieren.
Google Chart Api ist nur auf der Client-Seite verfügbar. Sie verwenden, um einen serverseitigen Download anzubieten, aber das ist lange vorbei. – allencoded
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.
<?
# ------- 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;
?>
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.
- 1. Wie zeichne ich CombinedChart in IOS-Diagramm
- 2. Wie zeichne ich ein Diagramm in Runtime mit Active Reports?
- 3. jung2: Wie zeichne ein Diagramm als Baum?
- 4. matplotlib/python - Wie zeichne ich ein Diagramm? Mittelwert ± 3 * Standardabweichung
- 5. Wie zeichne ich ein Streudiagramm mit Beschriftungen im Google-Diagramm?
- 6. Wie zeichne ein Diagramm in Android wie Wifi Analyzer App?
- 7. Wie zeichne Linien Diagramm Graphen in asp.net
- 8. Wie zeichne Diagramm in GraphView ohne Hintergrund?
- 9. Wie zeichne ich eine Linie in Google Combo-Diagramm
- 10. Wie zeichne glatte Linie Diagramm mit SVG?
- 11. Zeichne Multi-Objekt-Diagramm in Fragment
- 12. Wie zeichne ich ein Farbrad in iPhone?
- 13. Wie zeichne ich ein Raster in SketchFlow?
- 14. Wie zeichne ich ein log-normalisiertes Imshow-Diagramm mit einer Farbleiste, die die Rohdaten in Matplotlib
- 15. Wie zeichne ich ein hängendes Rootogramm in Python?
- 16. Wie zeichne ich ein Klassifikationsdiagramm einer SVM in R
- 17. Wie zeichne ich ein Gebietsdiagramm in ggplot mit Zeitreihendaten?
- 18. Wie zeichne ich eine Lernkurve in R?
- 19. Wie lösche oder schließe ich ein Diagramm in Matplotlib?
- 20. Wie zeichne ich ein benutzerdefiniertes DataGridViewCell
- 21. Wie zeichne ich ein Javascript-Gantt-Diagramm mit nur der x-Achse
- 22. libgdx - Wie zeichne ich ein Pixel
- 23. Wie zeichne ich ein Liniendiagramm mit Json-Array mit Webrequest
- 24. Wie zeichne ich ein Diagramm mit sortierten horizontalen Fehlerbalken (sortierte Balkenbilder mit Fehlermarkierungen)?
- 25. Wie zeichne Graph in Android?
- 26. Wie zeichne Kreisdiagramm in Schienen?
- 27. Wie zeichne ich effizienter?
- 28. Wie kann ich ein Sonderzeichen in PHP
- 29. Wie exportiere ich ein chart.js Diagramm?
- 30. Wie zeichne ein Rechteck über eine bestimmte Region in einem Matplotlib-Diagramm
Art, das Rad neu zu erfinden .. wenn Sie Ihr eigenes Framework aufbauen wollen. – h3xStream
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