Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] jpgraph - Pie SetCenter funktioniert nicht

Einklappen

Neue Werbung 2019

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

  • [Erledigt] jpgraph - Pie SetCenter funktioniert nicht

    Guten Abend,

    ich habe mir heute jpgraph heruntergeladen und auch schon ausprobiert.
    Ich habe auch schon brauchbare Ergebnisse bekommen.

    PHP-Code:
    $arrayData = array();
    $arrayLegende = array();

    while(
    $row2 mysql_fetch_assoc($result2))
    {
        
    $strZeit Sekunden_In_Zeit$row2['RUNDENZEIT'] );
        
    $intAnzahl $row2['ANZAHL'];

        
    array_push$arrayData$strZeit );
        
    array_push$arrayLegende$strZeit.' - '.$intAnzahl.'x' );
    }

    unlink("programme/kart/statistiken/charts/alle_zeiten_".$intJahr."_pie.png");

    $graph = new PieGraph(670,400,"auto");
    $graph->SetShadow();

    $graph->title->Set($intJahr);
    $graph->title->SetFont(FF_ARIAL,FS_BOLD,20);
    $graph->title->SetColor('#4444FF');

    $p1 = new PiePlot($arrayData);

    $p1->SetSize(0.3);
    [
    B]$p1->SetCenter(0.35,0.5);[/B]

    $p1->value->SetFont(FF_FONT1);
    $p1->value->SetColor("black");

    p1->SetLabelType(PIE_VALUE_ABS);

    $p1->value->SetFormat("%d");
    $p1->value->HideZero();
    $p1->value->Show();

    $p1->SetLegends$arrayLegende );
    $graph->legend->Pos(0.73,0.05);
    $graph->legend->SetColumns(2);

    $graph->Add($p1);
    $graph->Stroke("programme/kart/statistiken/charts/alle_zeiten_".$intJahr."_pie.png"); 
    Das Problem ist bei der Funktion SetCenter. Egal welchen Wert ich da eintrage, das Diagramm bleibt in der Mitte stehen.
    Das gd Version 2.4.3 für PHP ist installiert.

    Ich arbeite mit Firefox 34, aber habe es auch schon mit dem IE 11 versucht. Bei beiden Browsern wurde das Diagramm nicht verschoben.
    In den Beispielen, die beim Download dabei waren, hat diese Funktion auch nicht funktioniert.

    Ich hoffe mir kann bei dem Problem jemand helfen.

    Vielen Dank und ein gutes neues Jahr


  • #2
    Lösung

    Hallo Leute,

    ich habe das Problem gefunden.

    Die Funktion
    PHP-Code:
    $p1->SetCenter(0.35,0.5); 
    wird korrekt ausgeführt. Jedoch liegt das Problem in den Theme-Klassen. In dieser Klasse wird das SetCenter wieder auf den Ursprungszustand zurückgesetzt.

    Als Lösung gibt es jetzt mehrere Möglichkeiten:
    1. Standardmäßig wird die UniversalTheme.class.php verwendet, in der man die SetCenter-Zeile einfach auskommentiert. In meinem Fall ist das im PiePlot-Case.

    PHP-Code:
    function ApplyPlot($plot) {

            switch (
    get_class($plot))
            { 
                ...

                case 
    'PiePlot':
                {
                    
    $plot->SetCenter(0.50.45);
                    
    $plot->ShowBorder(false);
                    
    $plot->SetSliceColors($this->GetThemeColors());
                    break;
                }

                ...
            }
        } 
    2. Eine neue Theme-Klasse im Verzeichnis themes erstellen.
    Die Theme-Klasse wird wie folgt aufgerufen

    PHP-Code:
    $arrayData = array();
    $arrayLegende = array();

    while(
    $row2 mysql_fetch_assoc($result2))
    {
        
    $strZeit Sekunden_In_Zeit$row2['RUNDENZEIT'] );
        
    $intAnzahl $row2['ANZAHL'];

        
    array_push$arrayData$strZeit );
        
    array_push$arrayLegende$strZeit.' - '.$intAnzahl.'x' );
    }

    unlink("programme/kart/statistiken/charts/alle_zeiten_".$intJahr."_pie.png");


    $graph = new PieGraph(670,400,"auto");
    $graph->SetShadow();

    $graph->title->Set($intJahr);
    $graph->title->SetFont(FF_ARIAL,FS_BOLD,20);
    $graph->title->SetColor('#4444FF');

    $p1 = new PiePlot($arrayData);

    //---------------------------------------------
    $themeClass = new KartTheme;
    $graph->SetTheme($themeClass); 

    Kommentar

    Lädt...
    X