Hallo!
Ich möchte ein Balkendiagramm erstellen, wobei die Werte, die für die Höhe dieser verwendet werden sollen, erst feststehen, wenn ein Formular abgesendet wird.
Es geht um einen Vergleich verschiedener Sortieragorithmen, in einem Formular kann der Benutzer angeben, wie groß das zu sortierende Array sein soll, dieses wird dann erstellt und mit verschiedenen Verfahren sortiert. Ich speichere die Zeiten in Variablen und möchte nun noch die Möglichkeit geben, diese Zeiten auch grafisch angezeigt zu bekommen.
Der Quellcode für das Diagramm ist an sich kein Problem. Aber ich kann es schlecht auslagern, weil dann die Zeiten nicht mehr zur Verfügung stehen. Eine Datenbank wollte ich auch nicht verwenden. Gibt es irgendwie eine Möglichkeit, das Bild in ein neues Fenster zu erstellen oder so?
Hier der entsprechende Ausschnitt aus der Formulardatei, in dem die Zeiten auftauchen - ich weiß, es ginge sicherlich schöner und kürzer, aber darum geht es mir gerade erstmal nicht, wie gesagt, das Problem mit der Grafik...
Und der Code für das Diagramm (die auskommentierten Werte würde ich gerne verwenden, dass das so nicht geht, ist mir schon klar, ich wollte nur nochmal verdeutlichen, was ich überhaupt will...):
Danke schon mal im Voraus für eure Hilfe!
Ich möchte ein Balkendiagramm erstellen, wobei die Werte, die für die Höhe dieser verwendet werden sollen, erst feststehen, wenn ein Formular abgesendet wird.
Es geht um einen Vergleich verschiedener Sortieragorithmen, in einem Formular kann der Benutzer angeben, wie groß das zu sortierende Array sein soll, dieses wird dann erstellt und mit verschiedenen Verfahren sortiert. Ich speichere die Zeiten in Variablen und möchte nun noch die Möglichkeit geben, diese Zeiten auch grafisch angezeigt zu bekommen.
Der Quellcode für das Diagramm ist an sich kein Problem. Aber ich kann es schlecht auslagern, weil dann die Zeiten nicht mehr zur Verfügung stehen. Eine Datenbank wollte ich auch nicht verwenden. Gibt es irgendwie eine Möglichkeit, das Bild in ein neues Fenster zu erstellen oder so?
Hier der entsprechende Ausschnitt aus der Formulardatei, in dem die Zeiten auftauchen - ich weiß, es ginge sicherlich schöner und kürzer, aber darum geht es mir gerade erstmal nicht, wie gesagt, das Problem mit der Grafik...
Code:
if($_POST["verfahren"]=="Alle Verfahren"){ $izeit=microtime(true); $array_sortiert=insertionsort($array); $izeit=microtime(true)-$izeit; echo "Benötigte Zeit für Insertion Sort: ".$izeit." s<br/>"; $szeit=microtime(true); $array_sortiert=selectionsort($array); $szeit=microtime(true)-$szeit; echo "Benötigte Zeit für Selection Sort: ".$szeit." s<br/>"; $bzeit=microtime(true); $array_sortiert=bubblesort($array); $bzeit=microtime(true)-$bzeit; echo "Benötigte Zeit für Bubble Sort: ".$bzeit." s<br/>"; $mzeit=microtime(true); $array_sortiert=mergesort($array); $mzeit=microtime(true)-$mzeit; echo "Benötigte Zeit für Merge Sort: ".$mzeit." s<br/>"; $qzeit=microtime(true); $array_sortiert=quicksort($array); $qzeit=microtime(true)-$qzeit; echo "Benötigte Zeit für Quick Sort: ".$qzeit." s"; }
Code:
<?php //$values = array($izeit,$szeit,$bzeit,$mzeit,$qzeit); $values = array(1,1,1,0.2,0.01); // irgendwelche Werte, damit es geht $labels = array("Insertion Sort", "Selection Sort", "Bubble Sort", "Merge Sort", "Quick Sort"); $n = sizeof($values); $max = max(1, max($values)); ## create image ## $width = 700; $height = 200; $label_h = 35; $diagr_h = $height - $label_h; $img = imagecreate($width, $height); $white = imagecolorallocate($img, 255, 255, 255); imagecolortransparent($img, $white); $rot = imagecolorallocate($img, 155, 0, 0); $gruen = imagecolorallocate($img, 0, 139, 0); $blau = imagecolorallocate($img, 0, 0, 155); $orange = imagecolorallocate($img, 255, 165, 0); $beige = imagecolorallocate($img, 255, 222, 128); $colors = array($gruen, $rot, $blau,$orange,$beige); foreach ($values as $key => $value) { $y2 = $height - $label_h; $y1 = $y2 - $diagr_h * $value / $max; $x1 = ($key + 0.5) * ($width / $n) - 30; $x2 = $x1 + 60; imagefilledrectangle($img, $x1, $y1, $x2, $y2, $colors[$key]); imagestring($img, 4, $x1, $height - 30, $value, $colors[$key]); imagestring($img, 4, $x1, $height - 17, $labels[$key], $colors[$key]); } ## send image ## header("Content-type: image/png"); imagepng($img); imagedestroy($img); ?>
Kommentar