Diagramm mit Variablen erstellen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Diagramm mit Variablen erstellen

    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...
    Code:
    if($_POST["verfahren"]=="Alle Verfahren"){         
      $izeit=microtime(true);         
      $array_sortiert=insertionsort($array);         
      $izeit=microtime(true)-$izeit;         
      echo "Ben&ouml;tigte Zeit f&uuml;r Insertion Sort: ".$izeit." s<br/>";
      $szeit=microtime(true);         
      $array_sortiert=selectionsort($array);         
      $szeit=microtime(true)-$szeit;         
      echo "Ben&ouml;tigte Zeit f&uuml;r Selection Sort: ".$szeit." s<br/>"; 
      $bzeit=microtime(true);        
      $array_sortiert=bubblesort($array);         
      $bzeit=microtime(true)-$bzeit;         
      echo "Ben&ouml;tigte Zeit f&uuml;r Bubble Sort: ".$bzeit." s<br/>";         
      $mzeit=microtime(true);        
      $array_sortiert=mergesort($array);       
      $mzeit=microtime(true)-$mzeit;       
      echo "Ben&ouml;tigte Zeit f&uuml;r Merge Sort: ".$mzeit." s<br/>";         
      $qzeit=microtime(true);       
      $array_sortiert=quicksort($array);      
      $qzeit=microtime(true)-$qzeit;       
      echo "Ben&ouml;tigte Zeit f&uuml;r Quick Sort: ".$qzeit." s";       
    }
    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...):
    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); ?>
    Danke schon mal im Voraus für eure Hilfe!

  • #2
    Zitat von Dumpfdoedel Beitrag anzeigen
    Aber ich kann es schlecht auslagern, weil dann die Zeiten nicht mehr zur Verfügung stehen.
    Dann übergebe sie per Session oder als GET-Parameter an das bilderzeugende Script.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Halleluja, dankeschön! Da wäre ich wohl nie drauf gekommen, aber so funktioniert es tatsächlich.

      Für den Fall, dass noch irgendjemand jemals an einem ähnlichen Problem sitzt, hier also noch schnell die entscheidende Zeile:
      Code:
      echo '<img src="diagramm.php?ins='.$izeit.'&sel='.$szeit.'&bub='.$bzeit.'&mer='.$mzeit.'&qui='.$qzeit.'/>';
      Und die Verwendung in "diagramm.php":
      Code:
      $izeit=$_GET["ins"];
      $szeit=$_GET["sel"];
      $bzeit=$_GET["bub"];
      $mzeit=$_GET["mer"];
      $qzeit=$_GET["qui"];
      $values = array($izeit,$szeit,$bzeit,$mzeit,$qzeit);
      Dankbare Grüße und tschüss!

      Kommentar


      • #4
        Zumindest statt & aber &amp; verwenden, sonst wird es kein gültiges HTML.

        Siehe auch: http://php.net/manual/de/function.http-build-query.php

        Kommentar

        Lädt...
        X